C_and_CPP 板


LINE

大家好 我在閱讀Beej's Guide中文譯本時,不太能理解下列這段文字: (http://beej-zhtw.netdpi.net/08-FAQ) 以下是我有疑問的一段內文 (疑問處使用綠色標記) ---------------------------------------------------------------- Q:我該怎麼寫一個 server,可以接受來自 client 的 shell 指令並執行指令呢? client 的處理過程是: 1. 用 connect() 連線到 server 2. send("/sbin/ls > /tmp/client.out") 3. 用 close() 關閉連線 此時,server 正在處理資料並執行指令: 1. accept() client 的連線 2. 使用 recv(str) 接收命令字串 3. 用 close() 關閉連線 4. 用 system(str) 執行指令 注意!server 會執行全部 client 所送的指令,就像是提供了遠端的 shell 存取權限,人 們可以連線到你的 server 並用你的帳號做點事情。例如:若 client 送出 "rm -rf ~" 會怎麼樣呢?這會刪掉你帳號裡的全部資料,就是這樣! 所以你學聰明了,你會避免 client 使用任何危險的工具,比如 foobar 工具: if (!strncmp(str, "foobar", 6)) { sprintf(sysstr, "%s > /tmp/server.out", str); system(sysstr); } 可是這樣還是不安全,沒錯:如果 client 輸入 "foobar; rm -rf ~" 呢? 最安全的方式是寫一個小機制,將命令參數中的非字母數字字元前面放個['\']字元[如 果適合的話,要包括空白]。 如你所見,當 server 開始執行 client 送來的東西時,安全性(security)是個問題。 ---------------------------------------------------------------- 我的疑問如下: 1. 請問加了strncmp那個判斷式後,按照程式邏輯 假如client要請server執行"ls > file1.txt" 必須要使用"foobar ls > file1.txt"才可以嗎? 請問為什麼要這樣做呢? 2. 請問"最安全的方式是寫一個小機制"那一個方式是什麼意思呢? 目前我的程度對於程式安全還沒有什麼概念...上面這段讀了幾次還是無法看懂QQ 謝謝大家 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.135.146.248
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1497416196.A.354.html ※ 編輯: sirusi (60.135.146.248), 06/14/2017 12:57:42
1F:→ pili100: 我是不知道foobar是什麼 06/14 13:51
2F:→ pili100: 簡單說,指令不用明碼傳送 06/14 13:51
3F:→ x000032001: 大致上是個wrapper 類似 https://url.fit/ZZRBN 06/14 14:45
4F:→ x000032001: 查查command injection就蠻多資訊了 06/14 14:50
5F:推 hn12404988: 投wrapper一票 06/14 19:25
6F:→ jackace: 只要有一個概念就行了 : DON'T DO THIS 06/14 20:17
7F:推 longlongint: 一般做法 只開固定功能 參數只給填純數值 06/14 23:03
8F:→ longlongint: 讓人填指令的做法真的很北七 06/14 23:03
9F:推 Neisseria: 讓人填指令感覺就是自已開洞給別人進來 06/15 07:41
10F:→ sirusi: 非常謝謝各位大大提供的方向! 06/15 10:05
11F:推 alex70266: 最簡單的想法就是client side丟過來的東西一定要驗證 06/16 22:48
12F:→ alex70266: 因為不能設想request參數都是安全的 06/16 22:50
13F:推 pttuser: 填指令當然沒問題,有問題的是安全性,加上sandbox吧 06/17 23:33
14F:→ Killercat: 其實我不太懂 安全性的東西不是server要負責的嗎? 06/18 14:45
15F:→ Killercat: SELinux就是這種思維下的產物 怎麼會跑去要client負責 06/18 14:45
16F:→ Killercat: 一個operation「安不安全」的定義 怎樣都不是client管 06/18 14:45
17F:→ Killercat: 今天client就算定一堆定義 別人sniffer你 一樣可以繞過 06/18 14:46
18F:→ Killercat: client的規範,這完全不是一個安全的系統該有的做法 06/18 14:46







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP