看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《ResolaQQ (ResolaQQ)》之銘言: : : 推 LPH66: 樓上講的攻擊的小範例 https://youtu.be/1S0aBV-Waeo 03/21 18:43
: 不好意思,英聽不太行也沒啥用過 Linux,想請問一下該影片最後做的事,是否是 : 1. 先用 root 帳號把他先前寫的那個有 buffer overflow 的程式改成具有 root 權限 : 2. 開個沒有 root 權限的帳號並使用 : 3. 執行有問題的程式,將修改權限的動作偷偷放進參數列裡 : 由於該程式具有 root 權限,所以也有修改權限的能力 : 就能把目前沒有 root 權限的帳號修改成有 root 權限,之後就可以隨心所欲 : 這樣對嗎?還是有誤解? 他做的示範是這個樣子的: * 那隻被攻擊的程式是具有 suid 這個特殊權限的程式 這個特性表示他在執行時會暫時把目前的有效使用者 (euid) 設定為該程式的 owner (euid 表示目前執行這隻程式的使用者是誰; 一些修改系統設定檔中該使用者的資料的程式 如 passwd 就會設定 suid 權限以修改只有 root 能動的系統檔案 當然這種系統程式的 owner 一定是 root, 才不會被其他的使用者亂搞 suid 權限在一些類似狀況下也是有用的, 不一定要是 root 只是這裡這隻被攻擊的小程式的 owner 正好是 root 這樣) * 他用 perl 填進去的二進位字串是被稱做 shellcode 的"文字" 如他所言, 這些文字一旦被當成機械碼執行就會生出一個 shell 出來 * 現在該程式執行了, euid 設定成了 root 當被填入 shellcode 之後由於 buffer overflow shellcode 被當成程式執行生出 shell 由於現在的 euid 是 root 所以這個 shell 就是 root 的了 * 所以你所謂的「修改權限」其實是 suid 的動作, 不是 shellcode 的作用 shellcode 只是負責讓這隻被攻擊的程式生出一個 shell 來而已 只是因為 suid 的關係這個 shell 就變成 root 的這樣 ==== 這則影片所展示的範例跟 shellcode 程式應該都是出自 Hacking: The Art of Exploitation 這本書 https://en.wikipedia.org/wiki/Hacking:_The_Art_of_Exploitation (手邊正好有一本 XD) 影片內容是第二章中間的幾個小節 這一章的後半段還會講解這個 shellcode 是怎麼寫出來的 -- 1985/01/12 三嶋鳴海 1989/02/22 優希堂悟 1990/02/22 冬川こころ 1993/07/05 小町 つぐみ 歡迎來到 1994/05/21 高江ミュウ 1997/03/24 守野いづみ 1997/03/24 伊野瀬 チサト 1998/06/18 守野くるみ 打越鋼太郎的 1999/10/19 楠田ゆに 2000/02/15 樋口遙 2002/12/17 八神ココ 2011/01/11 HAL18於朱倉岳墜機 ∞與∫的世界 2011/04/02 茜崎空 啟動 2012/05/21 第貮日蝕計畫預定 2017/05/01~07 LeMU崩壞 2019/04/01~07 某大學合宿 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.39.85 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1458575083.A.9FC.html
ResolaQQ: 完全懂了,感謝,這是第一次看到除了SQL漏洞的hack實例 03/22 00:00
ResolaQQ: 所以想搞清楚到底在幹嘛,影片說太快又帶專有名詞就... 03/22 00:01
tuyutd0505: 學習了XD 謝謝前輩解釋 03/22 00:19
ronin728: 推 03/22 03:03
james732: 推說明 03/22 12:11