记一次毫无技术含量的检测

(其实我根本就不会有技术含量的)


应朋友的请求对某APP及其网站页面进行一些检测。检测结果朋友还要用,所以这里不能写的太详细。


大体是个个体创业项目的APP。用户用手机号注册,登录。APP调用百度地图的接口显示一些东西。此外还有兑换奖励(手机话费等)、意见反馈(评论、上传照片等)等功能。


首先要抓一下APP的数据包。这里可以通过电脑开热点、手机连接的方式,但是为了方便分析和修改,此处使用burpsuite。

手机和电脑连接同一个路由器。burp里打开proxy,将监听的IP设置为在路由器中的IP:




手机进入对应的WIFI的详细设置,找到代理设置,选择手动,填写对应的IP、端口。


此外可以设置一下Proxy的过滤规则,让它只抓取某个URL相关的包。


然后从APP里进行一些操作看看都访问了哪些地址。其中有一个 xxx.xxx/getIntegral?id=1234 这样的地址颇有可注入的嫌疑。扫描工具也提示或许可以注入,但是尝试次数一多IP就被ban了。看来还得试试别的办法。


然后发现此APP有个上传头像的功能。于是看看能否上传点别的东西。抓取到上传的request,content的格式是multipart/form-data。其中的参数有file,还有filename,十分明显。file是base64编码后的文件内容,而filename显然是指定文件名。抱着试试看的心理,传一个php shell。没有回显,似乎是成功了。但是文件到底在哪里呢?




于是上目录扫描,结果确实就找到了上传目录,而且还是可见的,严重的目录暴露。




更严重的是,这个位于上传目录的php文件确实被解析了,可以正常访问并执行。于是拿到了shell,剩下的事情都好说了。


——如果没有扫描到目录怎么办呢?如果这个路径不能执行怎么办呢?


通过向上传的URL提交错误的参数,比如不提交file参数等,可以爆出网站的错误提示。本来没期待太多内容,但结果真是大跌眼镜:




这啥,源代码都出来了?!你们这是在debug吗?透过这些代码,我们就能获得上传地址。或许你第一眼看上去,我们可能需要尝试几百次才能找到正确的地址,但其实不然,一次就能找到。而且即使这个上传路径不能执行,这段代码也提示了解决方案。


好了,拿到shell之后登上去,看看权限,发现自己是apache,而不是root,这就限制了我们能做的事情。比如尝试下载数据库文件,IP就被ban了。我尝试了提权,不过针对CentOS 7.1的exp只找到一个,还没成功,于是放弃。翻翻目录,在config目录下找到明显是与数据库有关的php文件,打开一看,里面有数据库的root账户密码。于是连接上数据库,脱库。里面的数据尽在掌握,检测可以算是完成了。


另外翻看数据库,可以找到管理员的账号密码。虽然密码是md5加密的,但通过反查还是得到了密码。通过简单的扫描就能找到管理后台。




虽然在不同地方使用不同密码、恶意访问检测并BAN IP、使用低权限运行apache这几点上做的还可以,但其它地方简直是各种不安全的综合展示。……因为这里不是某勒索平台也不是WriteUp所以最后几句话懒得写了,反正这么简单的大家也都懂。

评论 (2) -

  • rmb
    owo  学习了
    • 这确实是没什么技术含量的……只是现在写网站最好用一些靠谱的、容易配置的、安全性高一点框架,自己手搓或者全用默认配置的话就容易出现上面的问题……
      果然还是ASP.NET大法好 Smile 虽然WebForm比较被人诟病,但是从ASP.NET MVC到ASP.NET Core都是很不错的,特别是安全性方面。如果哪天能用XAML来写前端就好了XD

添加评论

Loading