一星期实战总结(二)

一星期实战总结(二)

把每个星期中,在实战中遇到的问题,还有一些思路和思考都写下来。

本故事纯属意淫,如有雷同纯属巧合~

为啥没有实战(一)?上一篇文章就是(一)了。

接上一篇的后续,该平台提拱了app下载(现在的狗推为了逃避打击,都已经开始自己用自己开发得APP了),去app抓包发现聊天对接了某易云信的即时聊天接口,从拿下来的后台源码里找到了api的调用文件,去调了聊天记录,搞来搞去最后发现,app的版本对不上号,怼了一顿等于白怼啊。。。

这周新的入手点是狗推用的旧版APP,拿到手第一步扔GDA里看了下,提示有腾讯的Bugly壳子。

1
2
APK加固方式:腾讯的Bugly服务打包{site:bugly.qq.com};
注意:当前分析结果为加固代码, 如需分析原APK/DEX, 您需先对该APK进行脱壳处理;

虽然这么提示,但是这个壳子并不是很专业,好多源代码还是可以看出来的,搜了下关键字http/sapi等,没啥明显的发现,换个思路。

准备用模拟器抓一下登陆包,代理挂上发现,APP提示网络错误,正常来说应该是不会这样的,问了下老大,说是可能有ssl pinning,查了下,发现可以用 Xposed+JustTrustMe来关闭APP的SSL证书验证,装完以后发现可以正常联网了,但是还是没有抓到登录的包,目前也没给账号,app也没有注册的功能。

正在犯愁的时候老大发来提示:“先看adnroidmainfest.xml,然后找程序的activity,然后再看依赖,搜不到有可能是逆向工具的原因”(更新:推荐使用 https://github.com/pxb1988/dex2jar ),然后找到了两个不同端口的WEB服务,遂访问过去。一个是聊天系统管理登录的,一个是资源存放的。

资源存放的存在目录遍历,看了下无非是一些头像、表情包没有什么的实际价值。

然后去看后台登陆,登陆处有验证码,暂时不考虑后台爆破和验证码能不能绕过的问题,习惯性的Ctrl+u看下网页源代码,发现一个二级目录的超链接,点进去发现能直接注册,看看注册个admin会不会有啥惊喜,注册成功后并没有啥惊喜,还是个普通用户,盘子的外面套了一层框架,右下角出来一个类似QQ的聊天界面,点开唯一的客服好友,看着界面沉思了会,和QQ的聊天框也是很像,有一处功能支持上传自定义表情,回想刚才的资源存放的地方,会不会有着联系?抄起burp上传冰蝎图片马抓包改后缀.jsp,返回了路径,访问下报错500,报错的原因是冰蝎没有处理报错,正常连接后成功GetShell。

虚拟终端查看了一下,root权限,省了很多事,去翻裤子账密,发现根目录有个.sql文件,下了回来看是创建数据库库结构的文件,开头注释已经写好了账密,可谓得来全不费工夫。用冰蝎连数据库发现有些bug,尝试反弹shell出来,试了好几种方式结果没有弹出来(后面进宝塔发现是有防火墙,端口都限制了)。尝试开socks代理进去链接,冰蝎的socks代理有些问题,不咋好用,换了Neo-reGeorg代理上,可以正常连进去了,提示1130,意思只能从localhost去连接,后来委曲求全,用C刀去一个表一个表导出来txt的,没成想,有个聊天记录表90多万条数据,直接查询的时间超时了。

大概隔了半个小时,突然想起来服务器上不是有宝塔吗,我还是root权限,持续性智商掉线,遂去读了下宝塔的配置,登进去宝塔后打包、下载、清日志,结束。

筛数据(筛同一个表的指定某列内容)

1
select id,username,password from user where id in(1,2,3,4,5)

做扫描(Nmap做网段扫描,速度比较慢但准确)

1
2
3
4
5
6
7
8
9
10
11
12
13
nmap -sS -Pn -p 1-65535 -n --open --min-hostgroup 4 --min-parallelism 1024 -T4 -v -oG result.txt 127.0.0.0/24
nmap -sS -Pn -p 1-65535 -n --open --min-hostgroup 4 --min-parallelism 1024 -T4 -v -oG result.txt -iL ip.txt
--------------------------------
-sS:使用SYN方式扫描,默认用的是-sT方式,即TCP方式,需要完成完整的三次握手,比较费时,SYN比较快一些
-Pn:禁用PING检测,这样速度快,并且可以防止有些主机无法ping通而被漏掉不扫描
-n:表示不进行DNS解析
--open:只输出检测状态为open的端口,即开放的端口
--min-hostgroup 4:调整并行扫描组的大小
--min-parallelism 1024:调整探测报文的并行度
-T4:总共有T0-T5,表示时间级别配置4级
-v:打印详细扫描过程
-oG:输出为比较人性化的格式,一条记录一行,后期好处理
-iL:载入文件,适合指定IP批量扫,不用一条条执行了

写脚本(-oG结果一键转csv脚本)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Author:Se7en

import re
import csv
import sys

def getCsv(ips,ports):
with open("nmap_result.csv", "w") as result_file:
writer = csv.writer(result_file)
flag = 0
for ip in ips:
writer.writerow([ips[flag]] + ports[flag])
flag = flag + 1
result_file.close()

def readTxt(txt_file):
with open(txt_file, "r") as file:
lines = file.readlines() # 把文件中所有的数据通过换行符切割,每一行成为一个元素
ips = [] # 定义ip存放列表
ports = [] # 定义port存放列表
for line in lines:
if ('Status: Up' not in line) and ('#' not in line):
ip = re.findall(r"(?:[0-9]{1,3}\.){3}[0-9]{1,3}", line) # 匹配ip
port = re.findall(r"([1-9]\d+\/.*?)\/{3}", line) # 匹配port
ips.append(ip[0]) # 存入ip进列表
ports.append(port)
file.close()
return ips,ports

if __name__ == '__main__':
try:
readtxt = readTxt(sys.argv[1])
getCsv(readtxt[0],readtxt[1])
print("Enjoy your nmap_result.csv :)")
except:
print("Please input your nmap result text! \n E.g:nmap_Result2csv.py nmap_result.txt")

(更新:后来发现,git上有个人写了自动化识别扫描结果和服务并调用medusa的,省了很多事情 :https://github.com/x90skysn3k/)

尝试绕WordPress的Wordfence插件,最后用

1
<a/href=javas&#99;ript&colon;eval('Unicode编码')>About</a>

绕过去了waf,但是发现输出的内容eval那些被过滤了,而且<a>标签需要点击交互也比较鸡肋,暂时还没有解决(更新:绕不过去,过滤规则变态,放弃了)

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×