刚结束某地HVV,小程序作为低成本易用的信息化系统,成为HVV新型重点突破对象。以下案例均来自于小程序,供大家学习。
点击小程序,进入公民办事,抓到小程序域名,访问直接是管理员后台,如下页面即为Fastadmin框架 。
一直有个坑,登录一直显示口令无效,在我要放弃的时候,点击返回上一步提醒我,您已登录,我纳闷了,发现该系统登陆操作后token会刷新,导致下一次登录必须使用上一次token,否则口令无效。因此应该是网络或系统本身有延时,导致未成功使用正确token进行登陆操作,当发现这个问题的时候我已经admin/123456登进了后台。
内包含数据近20000条公民信息,以及管理员账户几百个,且所有管理员账户中的账户名密码均为admin/123456。与地级市HVV | 未授权访问合集中的案例四系统情况类似。(码死)
前台业务处如下包,debug没有关导致爆出来数据库账户名密码,这个SQL注入太明显了,但此时我处在数据库账密的喜悦中没有搞SQL注入,可是这个数据库不对外,只能本地连接,烦死了。
后台查看管理员的时候存在延时注入
既然是fastadmin,那有很多拿shell的方法,这次是用在线命令插件漏洞写入PHP Webshell,该漏洞只在1.1.0可用。
但是这个系统是二开的,根本找不到插件的地方,在网上搜罗了一下拼接找到插件页面。
目录为:/addon?ref=addtabs
那该插件的目录就应该是/addon/command?ref=addtabs,但是显示该页面不存在,我以为路由没设置,把这个禁了,直到队友在一个文章发现直接command即可访问该插件,即目录为/command?ref=addtabs
点击一键生成API文档,文件为php,标题写为木马内容即可,测试只有冰蝎马可以,以前有类似案例。
连接木马成功
通过传大马中的nc提权,反弹shell到云服务器拿到root权限。
大马执行sql语句会报错,乱码,很烦。
数据库账户密码我还记着呢,我通过自己写一个sql执行页面的php文件来连接数据库。证明我拿下数据库权限。
代码如下:
<html>
<head>
<title>执行MySQL语句</title>
</head>
<body>
<h1>执行MySQL语句</h1>
<form method="POST" action="">
<textarea name="sql_statement" rows="5" cols="50" placeholder="请输入MySQL语句"></textarea>
<br>
<input type="submit" value="执行">
</form>
<?php
// 检查是否提交了表单
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 获取用户输入的MySQL语句
$sql_statement = $_POST['sql_statement'];
// 连接MySQL数据库
$host = 'localhost';
$username = '';
$password = '';
$database = '';
$connection = mysqli_connect($host, $username, $password, $database);
// 执行MySQL查询
$result = mysqli_query($connection, $sql_statement);
// 检查查询结果
if ($result) {
// 回显查询结果
echo '<h2>查询结果:</h2>';
while ($row = mysqli_fetch_assoc($result)) {
echo '';
print_r($row);
echo '';
}
} else {
// 显示错误消息
echo '<h2>错误:</h2>';
echo '<p>' . mysqli_error($connection) . '</p>';
}
// 关闭数据库连接
mysqli_close($connection);
}
?>
</body>
</html>
该医院的SQL注入处于公众号挂号处,当我登录进去点击挂号记录,抓到一个带病人id的包。
加了个单引号,出现报错order by
直接SQLmap跑发现跑不出来,但注入确实存在。发现asp.net框架,说明对方系统为windows。
分别指定数据库MySQL,Oracle,MSSQL。终于在MSSQL时跑出注入,且为DBA权限。
想到xp_cmdshell可以执行命令,但可惜这是HIS,人家做了防护,我无论怎么设置都无法执行命令,放弃换目标。
打开小程序抓包,直接抓到了所有被访人的信息,一个接口未授权访问。
还没登录就这样,登进去还了得。
登进去并添加了一个访问申请
在查看自己的访问申请记录时抓包
抓到如下链接:app/visitor/getVisitorInfo?viId=1,遍历可得到访客信息几百条,以及访客记录等。认定为平行越权,最后发现甚至是未授权访问,没有权限验证。
这个案例比较好笑,是我在搜小程序,它弹出了差一个字的小程序,没仔细看就开始打,也是一个县医院。
这应该是疫情期间专门为核酸检测预约做的小程序。
登录的时候如果身份证姓名不匹配是无法通过验证的,说明里面的身份证信息都是真实的,登进来的习惯性找带用户id的功能,点击就诊人列表抓包。
查到了自己的手机,身份证,名字,性别
修改id可以查看其他人的信息,共计十几万条,妥妥的平行越权。
习惯性加个单引号,直接报错,页面显示SQL错误,这不是对应上了嘛,edu-SQL注入案例分享最后一条总结,平行越权大概率存在SQL注入。但是我这打歪了,没有授权,就打住放弃了,后续移交平台整改。