2010-11-10 47 views
2

作爲我的安全類的一部分,我們必須利用安全性較低的ubuntu版本中的多個漏洞。我解決了所有的挑戰,但是我遇到了一個問題,我希望有人能夠闡明一些問題。運行時printf中的不安全依賴setgid

每個挑戰都是一個setgid二進制文件,當它被接管時會給攻擊者提供下一個級別的權限。爲了添加到該級別的組中,可以運行命令l33t,該命令基本上運行了adduser <user> <group>

在我攻擊的一個,我的shellcode只是做了一個調用exec的l33t和我收到此消息: 不安全的依賴在printf的同時 /usr/share/perl5/Debian/AdduserCommon.pm線64運行setgid的。

要解決這個問題,我創建了一個兩行的Bourne shell是工作得很好:

#!/bin/sh 
l33t 

任何人都可以解釋爲什麼我看到了不安全的依賴問題嗎?

+0

[用於printf的perldoc](http://cpansearch.perl.org/src/CWEST/ppt-0.14/html/commands/printf/printf.tchrist.html#___top)確實注意到了這個問題......但沒有'幫助解釋爲什麼= \ – 2010-11-10 18:52:31

回答

0

如果您還不知道taint mode:它會導致所有用戶輸入被標記爲「污染」,並且會拒絕輸出任何「污染」值(這意味着您必須明確地「修復」不可信輸入)。

無論如何,AdduserCommon.pm線64是在dief功能的sprintf ...所以我懷疑所發生的事情是,當你直接調用l33t,該adduser腳本遇到某種錯誤,那麼污點引發錯誤時adduser試圖報告該錯誤。

+0

有道理。謝謝! – bboe 2010-11-11 21:18:31